Максимальное количество параметров, переданных в сообщении
Я получаю эту ошибку:
Exception during request processing:
Caused by javax.servlet.ServletException with message:
"Parameter count exceeded allowed maximum: 512"
Кажется, что существует ограничение на количество параметров, переданных в сообщении.
Как я могу расширить этот предел в JBoss?
Ответы
Ответ 1
Количество параметров было ограничено на всех веб-серверах для подключения атаки hashmap collision denial of service.
Вы можете увеличить лимит, добавив в конфигурационный файл следующее системное свойство (например, standalone.xml
):
<property name="org.apache.tomcat.util.http.Parameters.MAX_COUNT" value="10000"/>
(источник)
Ответ 2
На всякий случай: для простого Tomcat соответствующее решение состоит в том, чтобы добавить:
org.apache.tomcat.util.http.Parameters.MAX_COUNT=10000
in catalina.properties
Ответ 3
Да, это правильно! У Аарона Дигуллы был правильный ответ!
Но обратите внимание, что: в Jboss 7, пожалуйста, вставьте строку
<system-properties>
<property name="org.apache.tomcat.util.http.Parameters.MAX_COUNT"value="10000"/>
</system-properties>
сразу после тега <extensions>
, если Jboss 7 не выполнит ошибку при анализе standalone.xml, позвольте мне привести пример:
<?xml version='1.0' encoding='UTF-8'?>
<server xmlns="urn:jboss:domain:1.2">
<extensions>
<extension module="org.jboss.as.clustering.infinispan"/>
<extension module="org.jboss.as.configadmin"/>
...
</extensions>
<system-properties>
<property name="org.apache.tomcat.util.http.Parameters.MAX_COUNT" value="10000" />
</system-properties>
Ответ 4
Другой способ, если вы используете WildFly, - это отредактировать файл standalone.xml
и добавить max-parameters
:
<http-listener name="default" socket-binding="http" max-parameters="2690"/>
пример standalone.xml:
...
<subsystem xmlns="urn:jboss:domain:undertow:1.1">
<buffer-cache name="default"/>
<server name="default-server">
<!-- change here-->
<http-listener name="default" socket-binding="http" max-parameters="2690"/>
<!-- change here-->
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
</host>
</server>
...
Ответ 5
Вам нужно вставить следующий фрагмент в ваш standalone.xml сервера Jboss:
<server name="default-server">
<http-listener name="default" socket-binding="http" max-parameters="5000"/>
<https-listener name="https" socket-binding="https" max-parameters="5000"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
<http-invoker security-realm="ApplicationRealm"/>
</host>
Фокус на теге HTTP Listener со значением max-параметра - вот что имеет значение. Значение по умолчанию для этого поля: -
org.apache.tomcat.util.http.Parameters.MAX_COUNT=1000
Это было сделано в качестве средства защиты от атаки отказа в обслуживании из-за коллизии хеш-карты, как обсуждалось здесь.