Всякий раз, когда я пытаюсь добавить специальные символы в 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-кода статуса в самом начале ответа.