Кодирование прямой и обратной косой черты в tomcat 7?

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

ОБНОВЛЕНИЕ

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

Ответ 1

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

Установите для CATALINA_OPTS env var значение

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

Это позволит кодировать косые черты.

Ответ 2

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


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

Ответ 3

Пробовали ли вы помещать URIEncoding="UTF-8" в <Connector в server.xml?