JSP+Tomcat应用在Chrome中出现net::ERR_INCOMPLETE_CHUNKED_ENCODING 200错误求助
解决Chrome中net::ERR_INCOMPLETE_CHUNKED_ENCODING 200异常的方案
嘿,这个问题我之前也碰到过几次,Chrome的这个chunked编码错误通常和响应流处理不当有关,结合你的JSP+Tomcat场景,给你几个排查和解决的方向:
1. 检查Servlet中的响应流是否被提前写入
这是最常见的原因:如果在调用forward之前,你的Servlet不小心向响应流写入了任何内容(哪怕是一个空格、换行,或者调用了resp.flushBuffer()),Tomcat会提前发送响应头,后续转发时就会导致chunked编码的响应不完整,Chrome就会报错。
解决方法:
- 彻底删除Servlet中所有向
resp.getWriter()或resp.getOutputStream()写入内容的代码,确保转发前没有任何输出操作。 - 比如如果有类似这样的代码,一定要删掉:
resp.getWriter().println("debug info"); // 这类代码会导致问题 resp.flushBuffer(); // 同样会触发响应头提前发送
2. 修正JSP的contentType配置错误
你的JSP开头的contentType声明存在冲突:
<%@ page contentType="text/html; ISO-8859-1;charset=UTF-8" language="java" %>
这里同时指定了ISO-8859-1和UTF-8两种编码,会导致Tomcat处理响应编码时出现混乱,间接引发chunked编码异常。
解决方法:统一编码为UTF-8,改成:
<%@ page contentType="text/html; charset=UTF-8" language="java" %>
3. 调整Tomcat缓冲区或压缩配置
有时候Tomcat的默认响应缓冲区过小,或者开启了压缩功能,会和chunked编码机制冲突:
- 调整JSP缓冲区:在JSP页面顶部添加缓冲区设置,调大缓冲区大小并开启自动刷新:
<%@ page buffer="16kb" autoFlush="true" %> - 关闭Tomcat压缩:找到Tomcat安装目录下
conf/server.xml中的Connector配置,暂时关闭压缩功能(如果开启了的话):
修改后重启Tomcat再测试。<!-- 把compression="on"改成compression="off" --> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" compression="off"/>
4. 排查JSP页面的输出异常
如果JSP页面中的Java代码块抛出未捕获的异常,或者HTML结构不完整,会导致响应流输出到一半中断,也会触发这个错误:
- 检查Java代码:页面中导入了
ArrayList,如果有使用这个集合的代码(比如迭代输出),确保没有空指针或其他异常,最好用try-catch包裹可能出错的代码段:<% try { // 你的集合操作代码 } catch (Exception e) { e.printStackTrace(); // 或者记录日志,避免输出中断 } %> - 检查HTML结构:确保所有标签都正确闭合(比如你的
<div class="topbar_button">有没有闭合标签</div>),虽然浏览器有容错机制,但极端情况下会影响响应内容的完整性。
先从前面两个方案开始排查,这两个是最容易触发这个问题的原因,一般都能解决。
内容的提问来源于stack exchange,提问作者tecn603
相关产品推荐
相关产品推荐

