HTTP状态码1XX深入理解 - 编程一生

HTTP状态码1XX深入理解 - 编程一生

💡 原文中文,约3600字,阅读约需9分钟。
📝

内容提要

HTTP 1XX状态码表示服务器已收到请求,需进一步处理,为HTTP/1.1新增,不应发送给1.0客户端。主要包括:100 Continue(客户端先询问服务器是否接受大文件再发送)、101 Switching Protocols(协议升级,如建立WebSocket连接)、102 Processing(WebDAV复杂请求处理中)。

🔎

延伸解读

1XX状态码的适用场景与限制

1XX状态码是HTTP/1.1新增的,用于表示服务器已收到请求并需进一步处理。它们不应发送给HTTP/1.0客户端,因为旧版本无法识别。实际中,1XX状态码较少见,主要出现在需要优化大文件上传或协议升级的场景中。理解其适用条件有助于避免误用。

100 Continue的协商机制与注意事项

100 Continue用于客户端在发送大文件前询问服务器是否愿意接收。客户端发送包含Expect: 100-continue的请求,服务器若同意则返回100,否则返回417。但并非所有HTTP应用都支持此状态码,客户端应设置超时后直接发送数据,服务器也不应将其作为严格判断。代理服务器需根据下游版本决定转发或响应。

101 Switching Protocols与WebSocket握手

101状态码表示服务器应客户端请求切换协议,如从HTTP升级到WebSocket。此机制由客户端发起,服务器可接受或拒绝。在WebSocket握手过程中,客户端发送Upgrade和Connection头,服务器返回101及Sec-WebSocket-Accept验证。一旦建立连接,后续通信不再使用HTTP,而是独立的WebSocket数据帧。

102 Processing在WebDAV中的应用

102 Processing是WebDAV扩展的状态码,用于处理可能耗时较长的复杂请求。当客户端发送包含多个子请求的WebDAV请求时,服务器可返回102以通知客户端请求正在处理,避免客户端超时。这有助于维持连接并告知客户端服务器仍在工作。

❓

Q&A

HTTP 1XX状态码代表什么含义?

1XX状态码表示服务器已经收到了请求,但还需要进一步处理。这些状态码是HTTP/1.1版本新定义的,原则上不应该向HTTP/1.0版本的客户端发送。

100 Continue状态码有什么作用?

100 Continue用于客户端在发送较大文件前,先询问服务器是否愿意接受。客户端发送包含Expect: 100-continue的请求,如果服务器愿意接受,则返回100 Continue,客户端再发送实际内容;否则返回417 Expectation Failed。

101 Switching Protocols状态码用在什么场景?

101用于协议升级,例如从HTTP升级到WebSocket。客户端发起升级请求,服务器同意后返回101,之后通信改用新协议。

102 Processing状态码是做什么的?

102 Processing是WebDAV扩展的状态码,表示服务器正在处理请求,但需要较长时间。它用于通知客户端服务器已收到请求并正在处理,避免客户端超时。

客户端发送Expect: 100-continue后,如果服务器不支持怎么办?

如果服务器不支持100 Continue,客户端不应一直等待响应,而应在一定时间后直接发送计划发送的内容。服务器如果不打算接收,应返回417 Expectation Failed,而不是直接关闭连接。

代理服务器如何处理100 Continue Expect请求?

代理服务器如果知道下游兼容HTTP/1.1或不知道下游版本,应转发该请求;如果明确知道下游无法处理,则直接返回417 Expectation Failed,或者返回100 Continue并向下游传递删除了Expect头的报文。对于HTTP/1.0客户端,代理不应转发100 Continue响应。

🏷️

标签

➡️

继续阅读