请求实体太大(JasperServer/Apache/Tomcat)

Request Entity Too Large (JasperServer / Apache / Tomcat)

当我尝试访问某些 JasperReports 服务器页面时出现以下错误:

Request Entity Too Large The requested resource /jasperserver/olap/viewOlap.html does not allow request data with GET requests, or the amount of data provided in the request exceeds the capacity limit.

我检查了 Apache 日志文件并在 mod_jk.log

中收到以下错误

[Thu Nov 10 10:25:00 2016][8964:3876] [error] ajp_marshal_into_msgb::jk_ajp_common.c (517): failed appending the query string of length 7417

我已经尝试了很多不同的方法来解决它。

我将 maxHttpHeaderSize 和 max_packet_size 属性添加到 Tomcat (server.xml) 的 ajp 连接:

<Connector port="8010" protocol="AJP/1.3" connectionTimeout="20000" redirectPort="8443" maxHttpHeaderSize="65536" max_packet_size="65536" />

我还向 Apache httpd.conf 文件添加了 LimitRequestLine、LimitRequestBody、LimitRequestFieldSize 和 LimitRequestFields(将其添加到文件末尾,没有任何 VirtualHost):

LimitRequestLine 65536 LimitRequestBody 0 LimitRequestFieldSize 65536 LimitRequestFields 10000

我仍然收到上述错误。

我还发现了一些将 max_packet_size 添加到 Apache 的 workers.properties 的建议。但是,如果我添加该属性,我会收到 HTTP 400 错误和一个白页。这就是为什么我在 workers.properties:

中评论 属性

#worker.jasper.max_packet_size=65536

我在更改配置后重新启动了所有服务。

当我通过 Tomcat (http://HOSTNAME:8081/jasperserver/..) it works fine. Only when I access it via AJP-Connector of Apache (http://HOSTNAME/jasperserver/..) 的 HTTP 连接器访问相同的页面时,出现错误。所以我觉得应该是AJP-Connector有什么问题。

阿帕奇:2.4.12 JasperReports 服务器:6.2.1 Apache Tomcat 版本 8.0.14:

有没有人建议我必须做些什么来解决这个问题?

我想通了。

server.xml 中 Tomcat 的属性必须是 packetSize 并不是 max_packet_size

另请参阅文档 AJP Connector

重命名后,可以正常使用

这是我的配置:

Tomcat server.xml:

Connector port="8010" protocol="AJP/1.3" redirectPort="8443" packetSize="65536"

阿帕奇 workers.properties:

worker.jasper.max_packet_size=65536

如果之后出现错误:

Request-URI Too Long

The requested URL's length exceeds the capacity limit for this server.

您必须在 Apache httpd.conf 文件中设置以下属性:

LimitRequestLine 65536 LimitRequestBody 0 LimitRequestFieldSize 65536 LimitRequestFields 10000

希望这个回答对其他人也有帮助。