Tomcat возвращает HTTP Status 400 - Плохой статус запроса, когда я пытаюсь отправить специальные символы в URL - PullRequest
0 голосов
/ 15 октября 2018

Всякий раз, когда я пытаюсь добавить специальные символы в URL-адрес в браузере Mozilla Firefox, выполните следующие действия:

https://URL/|

или

https://URL/]

Tomcat возвращает HTTP-статус 400 - неверный запрос и трассировка стека исключений следующим образом.

Type Exception Report

Message Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

Description The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).

Exception

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:474)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:294)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:770)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:748)

Note The full stack trace of the root cause is available in the server logs.

Удивительно, но тот же URL-адрес со специальными символами работает правильно в браузере Google Chrome.

У меня есть следующие вопросы: 1) Какие изменения я должен сделать в файле конфигурации Tomcat, чтобы он не возвращал код состояния 400 и трассировку стека исключений?2) Почему Mozilla Firefox не может кодировать URL-адрес?

Примечание. Я уже настроил одну общую страницу для кода состояния типа 4XX в моем приложении, развернутом на tomcat 9, но проблема в том, что tomcat возвращается400 неправильных запросов http-кода статуса в самом начале ответа.

1 Ответ

0 голосов
/ 13 февраля 2019

смотрите здесь relaxedPathChars и relaxedQueryChars https://tomcat.apache.org/tomcat-8.5-doc/config/http.html вам нужно установить их для всех предыдущих символов, которые были разрешены без экранирования

...