Какая максимальная длина 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)