5 回答
TA贡献1946条经验 获得超4个赞
是。换句话说,任何HTTP请求消息都允许包含消息体,因此必须解析消息。但是,GET的服务器语义受到限制,使得正文(如果有的话)对请求没有语义含义。解析的要求与方法语义的要求是分开的。
所以,是的,你可以使用GET发送一个正文,不,这样做永远不会有用。
这是HTTP / 1.1的分层设计的一部分,一旦规范被分区(正在进行中),它将再次变得清晰。
罗伊....
是的,您可以使用GET发送请求正文,但它不应该有任何意义。如果你通过在服务器上解析它并根据其内容更改响应来赋予它意义,那么你忽略了HTTP / 1.1规范第4.3节中的这个建议:
[...]如果请求方法不包含实体主体的定义语义,则在处理请求时应该忽略消息主体。
和HTTP / 1.1规范中的GET方法的描述,第9.3节:
GET方法意味着检索Request-URI标识的任何信息([...])。
其中声明请求主体不是GET请求中资源标识的一部分,只是请求URI。
更新 引用为“HTTP / 1.1规范”的RFC2616现已过时。2014年,它被RFC 7230-7237取代。引用“处理请求时应该忽略消息体”已被删除。它现在只是“请求消息框架独立于方法语义,即使该方法没有定义消息体的任何用途”第二个引用“GET方法意味着检索任何信息......由Request-URI标识”被删除了。 - 来自评论
TA贡献1813条经验 获得超2个赞
restclient和REST控制台都不支持这个,但卷曲确实如此。
的HTTP规范说,在第4.3节
如果请求方法的规范(第5.1.1节)不允许在请求中发送实体主体,则消息主体不得包含在请求中。
第5.1.1节将我们重定向到第9.x节的各种方法。他们都没有明确禁止包含消息体。然而...
通过检查Request-URI和Host头字段来确定Internet请求标识的确切资源。
而9.3节说
GET方法意味着检索由Request-URI标识的任何信息(以实体的形式)。
这一点一起表明,在处理GET请求时,服务器不需要检查Request-URI和Host头字段之外的任何其他内容。
总之,HTTP规范并不会阻止您使用GET发送消息体,但是如果所有服务器都不支持它,那么它就不会让我感到惊讶。
添加回答
举报