HTTP请求方法的有效载荷

HTTP上的Wikipedia条目列出了以下HTTP请求方法:

  • HEAD:要求响应与对应于GET请求的响应相同,但没有响应主体。
  • GET:请求指定资源的表示。
  • POST:将要处理的数据(例如,从HTML表单)提交到所标识的资源。 数据包含在请求的正文中。
  • PUT:上传指定资源的表示。
  • 删除:删除指定的资源。
  • TRACE:回应接收到的请求,以便客户端可以看到中间服务器做了哪些(如果有的话)更改或添加。
  • 选项:返回服务器支持指定URL的HTTP方法。 这可以用来通过请求'*'而不是特定资源来检查Web服务器的功能。
  • CONNECT:将请求连接转换为透明的TCP / IP隧道,通常通过未加密的HTTP代理来实现SSL加密通信(HTTPS)。
  • 补丁:用于对资源进行部分修改。
  • 我有兴趣知道(特别是关于前五种方法):

  • 哪些方法能够(应该?)接收有效载荷
  • 可以接收有效载荷的方法,他们如何接收它?
  • 通过URL中的查询字符串?
  • 通过URL编码的身体?
  • 通过raw / chunked body?
  • 通过以上的([全部/部分])组合?
  • 我很感激所有的输入,如果你可以分享一些(最好是轻的)阅读,那也太棒了!


    RFC 7231,HTTP 1.1语义和内容是关于HTTP方法语义的最新和权威的来源。 该规范指出,对于可能包含在GET,HEAD,OPTIONS或CONNECT消息中的有效内容,没有定义的含义。 4.3.8节说明客户端不得发送TRACE请求的主体。 所以,只有TRACE不能有一个有效载荷,但如果客户端发送一个(意味着它可以忽略它),GET,HEAD,OPTIONS和CONNECT可能不会知道如何处理它。

    如果您认为有什么不明确的地方,那么您可以通过邮件列表来表达您的疑虑。


    以下是RFC 7231的摘要,链接的更新版本@Darrel发布:

  • HEAD - 没有定义的主体语义。
  • GET - 没有定义的主体语义。
  • PUT - 身体支持。
  • POST - Body支持。
  • DELETE - 没有定义的主体语义。
  • 支持身体- TRACE。
  • 选项 - 身体支持,但没有使用语义(可能在未来)。
  • CONNECT - 没有定义的主体语义
  • 正如@John也提到的,所有请求方法都支持URL中的查询字符串(一个值得注意的例外可能是OPTIONS ,如果URL是HOST/* ,它似乎只是有用的[在我的测试中])。

    我没有测试CONNECTPATCH方法,因为我对它们没有兴趣。


    我很确定GET请求是否可以有有效载荷并不清楚。 GET请求通常通过查询字符串发布表单数据,对于HEAD请求也是如此。 HEAD本质上是GET - 除了它不需要响应主体。

    (注意:我说这不是很清楚,因为GET请求在技术上可以升级到另一个协议;事实上,一个websockets版本就是这样做的,虽然一些代理软件可以很好地处理它,但其他人却在握手时感到尴尬)。

    POST通常有一个主体。 没有什么会阻止您使用查询字符串,但POST正文通常会在POST中包含表单数据。

    有关更多(和更详细的)信息,我会碰到实际的HTTP / 1.1规格。

    链接地址: http://www.djcxy.com/p/42167.html

    上一篇: Payloads of HTTP Request Methods

    下一篇: Get frame from Img tag with a url source in Javascript