net :: ERR_INCOMPLETE_CHUNKED_ENCODING使用JSP的SPRING MVC应用程序

时间:2015-07-19 17:00:56

标签: java spring jsp spring-mvc

我使用SPRING MVC和JSP开发了一个Web应用程序,现在这些应用程序在本地工作得很好,但是当我在服务器上部署时,我收到了这个错误。没有任何东西被装上。

除登录页面外,所有页面都会发生这种情况。只有登录页面才能成功显示。我监视过tomcat日志,但也不例外。

用Google搜索了一整天,但仍然无法找出原因,如果您对此有所了解,请提出建议。

chorome network info, show status faul

3 个答案:

答案 0 :(得分:5)

远程Tomcat可能具有较小的默认写入缓冲区大小,部分配置的直接缓冲区,或者更有可能服务器可能只有它想要在请求中返回的更多数据。

无论如何要查看值是什么, 暂时 ,请在底部粘贴以下 标记 您的登录页面JSP的 正文 ,以及一个损坏的页面。

<% out.println("<p>bufferSize: " + out.getBufferSize() + " remaining: " + out.getRemaining() + " used: " + (out.getBufferSize() - out.getRemaining()) + " autoFlush: " + out.isAutoFlush() + "</p><br>"); %>

您应该看到类似的内容:

bufferSize: 8192 remaining: 1509 used: 6683 autoFlush: true

作为一个潜在的快速修复,看看非工作页面是否将呈现没有缓冲区,通过在JSP页面的顶部粘贴以下标记:

<%@ page buffer="none" %>

如果仍然没有运气选择一个大数字,比如8MB(相对于8KB),并通过添加以下内容来查看是否足以让您的页面呈现:

<%@ page buffer="8192kb" %>

如果这样可以解决问题,那么只需在页面上注明 使用 bufferSize,添加一点并进行调整,以便:

bufferSize: 8380416 remaining: 8321883 used:58533 autoFlush: true

你可能会逃脱:

<%@ page buffer="64kb" %>

如果仍然没有运气,我怀疑你的JSP中有一个乱循环。

注意:不要将页面缓冲区保留为愚蠢的数字,因为在所有连接之间共享一个池。

答案 1 :(得分:0)

我遇到了这个ERR_INCOMPLETE_CHUNKED_ENCODING问题,特别是在代理上下文中处理的POST请求:请求是从Chrome浏览器启动的,到达我的SpringMVC-Apache / Tomcat7 Web应用程序,然后转发到SpringMVC-Apache / Tomcat8 REST应用程序。 / p>

原来的根本原因是:从代理服务器,我将响应返回到浏览器,而没有重置从REST应用程序获取的HTTP响应标头。因此,Chrome可能不喜欢这些标题中的内容。

解决方案是从我的代理实例化新的响应标头,同时重用从REST应用接收的正文。

        ResponseEntity<InfoBean> resE = restTemplate.exchange(reqE, InfoBean.class);
        ResponseEntity<InfoBean> resEE = new ResponseEntity<>(resE.getBody(), HttpStatus.OK);
        return resEE;

答案 2 :(得分:-1)

通过将autoflush属性添加到arober11建议的内容中,我能够解决类似的问题

<%@page buffer="8192kb" autoFlush="true" %>