Сервер Tomcat отвечает 400 неправильным запросом для этого URL-адреса

Я развернул статическое веб-приложение с помощью Apache Tomcat 8.5.8.

Когда я вызываю обычный URL, он работает нормально. http://localhost/example/index.html

Но когда я вызываю следующий URL-адрес, он дает мне ошибку 400 неверных запросов. http://localhost/example/index.html?host_info=Outlook|Веб

Я знаю, это потому, что URL-адрес имеет специальный символ (|). Но я не смог настроить Tomcat, потому что я новичок в настройке Tomcat.

И я не могу изменить URL-адрес, потому что это не то, что я генерирую. Это из другого компонента.

Поэтому мне действительно нужно настроить сервер Tomcat, чтобы он мог принимать URL-адрес.

Может ли кто-нибудь помочь мне в этом?


person Batu Zaya    schedule 19.12.2016    source источник


Ответы (2)


Попробуйте использовать tomcat 8.0.* вместо 8.5. Раньше я сталкивался с той же проблемой, и мне пришлось понизить версию tomcat до 8.0.28.

person Edward Lee    schedule 19.12.2016
comment
Понижение версии tomcat не является решением. Это увеличит угрозы безопасности приложения. - person Vishwas; 16.03.2021

Это поведение было введено в Tomcat 7.0.76, 8.0.42 и 8.5.12, чтобы соответствовать RFC 7231.

Эту принудительную проверку можно отменить, используя свойство requestTargetAllow в catalina.properties, чтобы разрешить запрещенные символы:

tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}

person Benoit Courtine    schedule 19.07.2017
comment
ваш пост не точен, это Tomcat 7.0.73 bz.apache.org/bugzilla/ show_bug.cgi?id=60594 - person PbxMan; 12.09.2018