很不容易找到一篇中文的RFC,看了之后,感觉帮助挺大的,献给你研究一下。
HTTP’/1.1源服务器的要求:
--- 当接收一个包含值为”100-contitue”的Expect请求头域的请求时,源服务器必须或者以100(继续)状态码响应并且继续从输入流里接收数据,或者以final状态码响应。源服务器不能在发送100(继续)状态码响应之前接收请求主体。如果服务器以final状态码响应后,它可能会关闭传输层连接或者它也可能会继续接收或遗弃剩余的请求。但是既然它返回了一个final状态码的响应,它就不能再去那个执行请求的方法(如:POST方法,PUT方法)。
--- 如请求消息不含值为"100-continue"的Expect请求头域, 源服务器不应发送100(继续)响应。当请求来自HTTP/1.0(或更早)的客户端时也不得发送100(继续)响应。对此规定有一例外:为了与RFC 2068兼容,源服务器可能会发送一个100(继续)状态响应以响应HTTP/1.1的PUT或POSt请求,虽然这些请求中没有包含值为”100-continue”的Expect请求头域。这个例外的目的是为了减少任何客户端因为等待100(继续)状态响应的延时,但此例外只能应用于HTTP/1.1请求,并不适合于其他HTTP版本的请求。
--- 若已经接收到部分或全部请求的消息的主体,源服务器可以不需要发100(继续)响应。
--- 发送100(继续)响应的源服务器必须最终能发送一个final状态响应,一旦请求消息主体被它接收到并且已经被它处理了,除非源服务器过早切断了传输层连接。
--- 若源服务器接收到不含值为"100-contitue"的Expect请求头域的请求,该请求含有请求消息主体,而服务器在从传输层连接上接收整个请求消息主体前返回一个final的状态响应,那么此源服务器不能关闭传输层连接直到它接收了整个请求或者直到客户端关闭了此连接。否则客户端可能不会信任接收此响应消息。然而,这一要求不应该被解释用来防止服务器抵抗服务攻击,或者防止服务器被客户端实现攻击。