用GET请求发送POST数据是否有效?

26

举例来说,使用curl可以在GET请求中“post”数据(发送实体主体)。这样做是有效的吗?我指的是:

  • 这不被任何RFC规范禁止吗?
  • 是否有人因为某种好的理由而使用它?
2个回答

31

请参阅RFC2616 - 超文本传输协议 -- HTTP/1.1,第4.3节"消息体":

如果请求方法的规范(第5.1.1节)不允许在请求中发送实体主体,则请求中不得包含消息主体。

在第9.3节“GET”中,包括实体正文并未被禁止。

因此,是的,您可以通过HTTP GET请求发送实体正文。


5
注意:您可以这样做,但代理服务器是否会篡改您的请求以及目标服务器是否能够理解它,是无法预测的。 - Piskvor left the building
1
@Piskvor:你说得对,我只回答了问题的第一部分。 :) - lutz

7

有一个很好的使用案例存在。

Elasticsearch在GET请求中使用实体主体数据,尝试将GET动词用作读取,同时允许比仅使用URL更复杂的规范(容易实现)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接