Какая максимальная длина URL в Tomcat?

И это настраивается? Могу ли я настроить Tomcat таким образом, чтобы URL с, скажем, 200 КБ параметров запроса успешно прошел через содержащийся сервлет?

Да, я знаю, что нужно использовать POST, когда у вас много данных; это менее приятный вариант в данном конкретном случае. Содержимое приложения (поисковая система) ожидает GET-запрос для выполнения поиска.

4 ответа

Решение

Вы можете отредактировать запись коннектора HTTP/1.1 в tomcat / conf / server.xml и добавить maxHttpHeaderSize="65536", чтобы увеличить его с максимального значения по умолчанию, равного 8 КБ или около того, до 64 КБ. Я полагаю, что вы могли бы увеличить это число настолько высоко, насколько это необходимо, но на данный момент мне достаточно 64K, поэтому я не пробовал.

<Connector port="8080" maxHttpHeaderSize="65536" protocol="HTTP/1.1" ... />

RFC2616 не устанавливает длину запроса HTTP GET, поскольку Microsoft сообщает о своей странице поддержки максимальной длины IE.

Таким образом, максимальная длина GET является проблемой, связанной с клиентом (браузером). Если ваше приложение используют люди, которых вы можете заставить использовать определенный браузер, тогда вы можете просто определить, какова длина поддержки этого браузера.

В каждом случае я предлагаю заглянуть на страницу Википедии об этих проблемах, связанных с браузером, в строке запроса (часть запроса, содержащая параметры для приложений на стороне сервера, та, которая следует после "?", В конечном итоге присутствующего в запросе).

Конечно, возможно, tomcat установит ограничение на стороне сервера. RFC говорит:

Серверы ДОЛЖНЫ иметь возможность обрабатывать URI любого ресурса, который они обслуживают, и ДОЛЖНЫ иметь возможность обрабатывать URI неограниченной длины, если они предоставляют формы на основе GET, которые могут генерировать такие URI. Сервер ДОЛЖЕН вернуть статус 414 (Request-URI Too Long), если URI длиннее, чем может обработать сервер (см. Раздел 10.4.15).

так что вы можете легко проверить, есть ли у Tomcat лимит, и выяснить, что это за предел, просто используя разные запросы, начиная с очень длинного, сообщающего об ошибке, и снижаясь на половину. Затем используйте метод деления пополам, чтобы быстро найти точное значение.

Для разъема AJP необходимо отрегулировать packetSize атрибут:

<Connector port="8009" 
    protocol="AJP/1.3" 
    packetSize="65536" />

Вы можете изменить конфигурацию на сервере Tomcat ( ..\Tomcat 6.0\conf\server.xml)

Другие вопросы по тегам