我使用SPRING MVC和JSP开发了一个Web应用程序,现在这些应用程序在本地工作得很好,但是当我在服务器上部署时,我收到了这个错误。没有任何东西被装上。
除登录页面外,所有页面都会发生这种情况。只有登录页面才能成功显示。我监视过tomcat日志,但也不例外。
用Google搜索了一整天,但仍然无法找出原因,如果您对此有所了解,请提出建议。
答案 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" %>