nginx使用http2代理请求时为什么还会返回给客户端Content-Length或Transfer-Encoding响应头?有时候这两个响应头会导致浏览器无法正确识别响应数据的实际大小请问应该如何处理?
在使用nginx作为http2代理请求时,会返回Content-Length或Transfer-Encoding响应头的原因是,nginx在接收到后端服务器的响应后,会将响应头信息原样返回给客户端。这些响应头可能是后端服务器主动设置的,也可能是nginx在处理响应时自动添加的。
对于使用http2协议的请求,Content-Length和Transfer-Encoding响应头并不是必须的,因为http2协议本身已经对传输数据进行了优化和压缩。但是由于nginx的默认配置可能会添加这些响应头,导致浏览器无法正确识别响应数据的实际大小。
如果希望去除这些响应头,可以在nginx配置中添加以下指令:
proxy_hide_header Content-Length;
proxy_hide_header Transfer-Encoding;
这样就可以隐藏这两个响应头,让浏览器根据http2协议来识别响应数据的实际大小。
另外,如果后端服务器主动设置了Content-Length或Transfer-Encoding响应头,并且希望保留这些响应头,那么就无法完全避免浏览器无法正确识别响应数据大小的问题。这时可能需要通过其他方式来获取实际的数据大小,例如使用JavaScript来获取响应数据的长度
原文地址: https://www.cveoy.top/t/topic/i0t9 著作权归作者所有。请勿转载和采集!