使用 GET 请求发送 POST 数据是否有效?
例如,使用 Curl,我可以在 GET 请求中“发布”数据(发送实体主体)。这是有效的做法吗?我的意思是:
- 任何 RFC 规范都没有禁止它吗?
- 有人有充分理由使用它吗?
Using Curl for example, I can "post" data (send an entity-body) in a GET request. Is this a valid thing to do? With that I mean:
- Is it not forbidden by any RFC specification?
- Does someone out there use it with good reason?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请参阅 RFC2616 - 超文本传输协议 - HTTP/1.1,第 4.3 节“消息正文”:
在第 9.3 节中,不禁止包含实体主体的“GET”。
所以,是的,您可以通过 HTTP GET 请求发送实体主体。
See RFC2616 - Hypertext Transfer Protocol -- HTTP/1.1, section 4.3 "Message Body":
In section 9.3 "GET" including an entity-body is not forbidden.
So, yes, you are allowed to send an entity-body with a HTTP GET request.
有一个“充分理由”的用例。
elasticsearch 在 GET 请求中使用实体主体数据来尝试使用 GET 动词作为读取,同时还允许比单独的 url 允许的更复杂的规范(很容易)。
There is a "good reason" use case out there.
elasticsearch uses entity-body data in GET requests to try to use the GET verb as a read while also allowing a more complicated specification than url alone allows (easily).