能否在POST请求的URL中包含原始Body数据?
能否在POST请求的URL中包含原始Body数据?
技术上你可以把原本该放在Body里的数据硬塞进URL,但这是不符合HTTP规范的错误操作,会带来一堆实际问题:
- URL长度受限:几乎所有服务器和浏览器对URL长度都有上限(一般在2KB到8KB区间),数据量稍大就会直接导致请求失败。
- 敏感数据暴露风险:URL会被记录在服务器日志、浏览器历史、代理缓存里,要是数据包含敏感信息,等于直接裸奔泄露。
- 语义混乱&维护成本高:POST请求的设计初衷就是用Body传递数据,硬塞URL里会让其他开发者摸不着头脑,完全违背API设计的通用约定,后续维护会非常麻烦。
- 解析失败概率高:你给出的示例
HTTP://token.abc/v1/oatuh2/rest/token{"OrgID: ABC", "sport:basketball"}本身就有格式问题——URL和JSON数据之间没有分隔符,而且JSON语法也错误(键和值都需要用双引号包裹),服务器根本没法正确解析这个请求,大概率返回404或格式错误。
正确的做法是:
把{"OrgID": "ABC", "sport": "basketball"}这类数据放在POST请求的Body中,同时设置请求头Content-Type: application/json,URL只保留干净的资源路径:http://token.abc/v1/oauth2/rest/token。
内容的提问来源于stack exchange,提问作者Deepak Dhyani
相关产品推荐
相关产品推荐

