Подтвердить что ты не робот

Максимальное количество параметров, переданных в сообщении

Я получаю эту ошибку:

Exception during request processing:
Caused by javax.servlet.ServletException with message:
"Parameter count exceeded allowed maximum: 512"

Кажется, что существует ограничение на количество параметров, переданных в сообщении.

Как я могу расширить этот предел в JBoss?

4b9b3361

Ответ 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

Это было сделано в качестве средства защиты от атаки отказа в обслуживании из-за коллизии хеш-карты, как обсуждалось здесь.