应该怎么做,发送PUT或POST请求的客户端,如果收到100-Continue响应而不期待它?

时间:2014-05-17 10:49:35

标签: http

RFC 2616:http://tools.ietf.org/html/rfc2616#section-8.2.3

  
      
  • 如果请求消息不包含带有" 100-continue"的预期请求标头字段,则原始服务器不应发送100(继续)响应。期望。
  •   
  • 此规则有一个例外:为了与RFC 2068兼容,服务器可以发送100(继续)状态以响应HTTP / 1.1 PUT或POST请求,该请求不包含Expect请求标头字段" 100继续"期望。其目的是最小化与未申报等待100(继续)状态相关的任何客户端处理延迟。
  •   

我不明白解释的目的。为什么服务器会发送一些东西,如果已经知道它不是预期的?如果客户不期望它,客户将不知道如何处理它。它别无选择,只能忽略它。但是,为什么还要发送呢?

如果客户端发送具有正文的PUT或POST请求消息,则它将包括" Expect:100-Continue"如果在发送正文之前它将等待确认,或者它将直接发送正文。如果它选择直接发送,则在服务器发送" 100-Continue"之前将发送正文。响应,如果客户端在没有任何内容发送时收到该响应,它会做什么呢?

我还阅读了有关100-Continue回复的其他问题,但我没有回答......

1 个答案:

答案 0 :(得分:0)

RFC 2068没有包含" Expect:100-continue"头。收到请求正文之前,需要收到HTTP 1.1请求的服务器发送100-Continue响应:

  

收到符合上述要求的方法   HTTP / 1.1(或更高版本)客户端,HTTP / 1.1(或更高版本)服务器必须   以100(继续)状态回复并继续从中读取   输入流,或以错误状态响应。

稍后,RFC 2616包含Expect标头,但允许服务器为之前已实现并可能正在等待的客户端发送100-Continue响应。