Nginx HTTP2 代理请求:为什么仍返回 Content-Length 或 Transfer-Encoding?
当 Nginx 使用 HTTP2 代理请求时,返回给客户端的响应头中仍然包含 'Content-Length' 或 'Transfer-Encoding' 是因为以下原因:
- HTTP/2 协议规范要求每个帧都必须包含一个有效的长度字段,以便接收方可以准确地解析和处理。
- 在使用 HTTP2 代理时,Nginx 将收到的 HTTP/2 帧转换为 HTTP/1.1 请求,并将其作为后端服务器的请求发送。在这个转换过程中,Nginx 需要重新计算并添加 'Content-Length' 或 'Transfer-Encoding' 头,以便与 HTTP/2 协议保持一致。
- 'Content-Length' 头表示响应正文的长度,而 'Transfer-Encoding' 头用于指示响应是否使用了分块传输编码。即使在使用 HTTP/2 协议时,这些头仍然是必需的,以便客户端能够正确解析和处理响应。
总结来说,当 Nginx 使用 HTTP2 代理请求时,返回给客户端的 'Content-Length' 或 'Transfer-Encoding' 响应头是为了遵守 HTTP 协议规范,并确保客户端能够正确解析和处理响应。
原文地址: https://www.cveoy.top/t/topic/pBZU 著作权归作者所有。请勿转载和采集!