Http 如果一个发送PUT或POST请求的客户机收到100个Continue响应而没有预期,该怎么办?

Http 如果一个发送PUT或POST请求的客户机收到100个Continue响应而没有预期,该怎么办?,http,Http,RFC 2616: 如果请求消息不包含带有“100 Continue”预期的Expect请求标头字段,则源服务器不应发送100(Continue)响应 此规则有一个例外:为了与RFC 2068兼容,服务器可以发送100(继续)状态以响应HTTP/1.1 PUT或POST请求,该请求不包括带有“100 Continue”预期的Expect request header字段。其目的是最小化与未声明的等待100(继续)状态相关的任何客户端处理延迟 我不明白这个解释的目的。如果服务器已经知道它不是预

RFC 2616:

  • 如果请求消息不包含带有“100 Continue”预期的Expect请求标头字段,则源服务器不应发送100(Continue)响应
  • 此规则有一个例外:为了与RFC 2068兼容,服务器可以发送100(继续)状态以响应HTTP/1.1 PUT或POST请求,该请求不包括带有“100 Continue”预期的Expect request header字段。其目的是最小化与未声明的等待100(继续)状态相关的任何客户端处理延迟
我不明白这个解释的目的。如果服务器已经知道它不是预期的,为什么它会发送一些东西?如果客户没有预料到这一点,他们就不知道该怎么办。它别无选择,只能置之不理。但是,为什么要麻烦发送它呢

如果客户端发送一个包含正文的PUT或POST请求消息,如果它在发送正文之前等待确认,它将包含“Expect:100 Continue”头,或者它将直接发送正文。如果选择直接发送,则正文将在服务器发送“100 Continue”响应之前发送,如果客户端在没有剩余内容可发送时收到该响应,它将如何处理


我还阅读了关于100继续回答的其他问题,但我没有得到答案…

RFC 2068没有包含“Expect:100 Continue”标题。接收HTTP 1.1请求的服务器需要在接收请求正文之前发送100 Continue响应:

从一个
HTTP/1.1(或更高版本)客户端,HTTP/1.1(或更高版本)服务器必须 以100(继续)状态响应并继续读取
输入流,或以错误状态响应

后来,RFC2616包含Expect头,但允许服务器为那些之前实现并可能正在等待的客户端发送100 Continue响应