http代理服务器(十七)chunk与length
此前最早在arcadia存在某些js资源没有length也没有chunk,因此加上了这一块
/**
* 这一块不应进入
* one of content_length and chunked in response header neccesary in http long connections
*/
// if(!response.headers().contains("Transfer-Encoding") && !"chunked".equals(response.headers().get("Transfer-Encoding")))
// response.headers().set(HttpHeaders.Names.CONTENT_LENGTH, response.content().readableBytes());
后来长时间没有其它网站有这样的情况,去除了
后来篡改response又加上了
// 篡改response后需要重新设置length
response.headers().set(HttpHeaders.Names.CONTENT_LENGTH, response.content().readableBytes());
一年多运行的挺好的,据此猜测浏览器可能有某种机制,当chunk 与length同时存在时取其一,毕竟这一年多不可能所有uri都是length的,必然存在同时在response中
现在,当运行postman时,报
Error: Parse Error: Content-Length can't be present with chunked encoding
因此加上
// Error: Parse Error: Content-Length can't be present with chunked encoding
if(!response.headers().contains("Transfer-Encoding") && !"chunked".equals(response.headers().get("Transfer-Encoding")))
// 篡改response后需要重新设置length
response.headers().set(HttpHeaders.Names.CONTENT_LENGTH, response.content().readableBytes());