Кодирование прямой и обратной косой черты в Tomcat 7? - PullRequest
15 голосов
/ 15 марта 2012

Я пытаюсь отправить запрос как http://site.com/abc%2Fabc, и он не работает (статус отправки 400).Насколько я понимаю, tomcat не принимает закодированные разделители пути по соображениям безопасности, но я не знаю, как включить это кодирование.(Я нашел только опцию AllowEncodedSlashes для HTTP-сервера Apache).Можете ли вы помочь мне?

ОБНОВЛЕНИЕ

Я исправил эту проблему с помощью крошечного хака - перед рендерингом замените все символы '/' на '|'и после поменять этот символ на '/'

Ответы [ 4 ]

22 голосов
/ 30 января 2013

Существует опция Tomcat для разрешения закодированных разделителей пути.

Установите для переменной CATALINA_OPTS значение

-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true

Это разрешит закодированные косые черты.

7 голосов
/ 16 мая 2013

Мы также можем добавить эту запись "org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = true" в catalina.properties разрешить закодированный слеш в URL.


И чтобы разрешить обратную косую черту, вы должны установить различные свойства. Ссылка на этот URL для другой конфигурации.

0 голосов
/ 29 мая 2018

Чтобы сделать это работоспособным для меня, отредактируйте $ CATALINA_HOME \ conf \ server.xml

Старое значение: <Connector ... protocol="HTTP/1.1"... />

Новое значение: <Connector ... protocol="HTTP/1.1"... relaxedQueryChars='\ { } |' />

Я использую Tomcat 7.0.88

0 голосов
/ 15 марта 2012

Вы пытались вставить URIEncoding="UTF-8" в <Connector в server.xml?

...