Назад | Перейти на главную страницу

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

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

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

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

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

Длина HTTP-запроса GET не применяется RFC2616, поскольку 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)

<Connector port = "8983" maxHttpHeaderSize = "100000" protocol = "HTTP / 1.1" connectionTimeout = "20000" redirectPort = "8443" />