Чванство терпит неудачу с 403 в Chrome и Firefox

#apache #ssl #tomcat #https #swagger

Вопрос:

У меня есть приложение со структурой ниже.

Балансировщик нагрузки (который разрешает https) <-> Веб-сервер Apache Httpd <-><-> Контейнер сервлета Apache Tomcat

Я раскрываю некоторые API, реализованные в Джерси. И чванство позволило легко протестировать.

Недавно мы обновили экземпляры tomcat с версии 7.x до версии 9.x. (9.x по умолчанию закомментировал AJP)

странное поведение: Я пытаюсь протестировать свой API аутентификации с помощью swagger. Результаты, как показано ниже;

Chrome с последней версией не работает с 403. Я вижу 403 в журналах доступа tomcat. Но в моих журналах приложений нет журнала, связанного с этим. Так что я предполагаю, что tomcat отклоняет запрос из-за некоторых нежелательных заголовков, реквизитов и т. Д…

Firefox, 64.0.2 работает просто отлично и может вызывать API без каких-либо проблем. Но если я обновлю firefox до версии 72.0.2, firefox тоже перестанет работать и снова запросит 403.

IE работает отлично работает 🙂

Если я посещаю пользовательский интерфейс swagger по IP-адресу машины и http (здесь нет https, так как https разрешен в балансировщике нагрузки в обычном сценарии), все браузеры работают просто отлично.

Я предполагаю, что существует проблема с настройками chrome, https, ssl и веб-сервера, из-за которой запрос, полученный к моему экземпляру tomcat, немного нарушен или неправильно структурирован.

Некоторые журналы во время сценария также можно увидеть здесь.

 10-Jun-2021 01:05:50.922 INFO [http-nio-8181-exec-38] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header
 Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
        java.lang.IllegalArgumentException: Invalid character found in method name [0x160x030x010x000xa30x010x000x000x9f0x030x010xb00x160xc3iC0xce0x9f/T0x8d0xb4Q_90xed0xdd0xe00xa3[0xf80xab0xc0amp;0x0b0xbe0x880xd40xa0E0x880xa20x830x000x00R0xc00x0a0xc00x140x0090x0080x000x880x000x870xc00x190x00:0x000x890xc00x090xc00x130x0030x0020x000x9a0x000x990x00E0x00D0xc00x180x0040x000x9b0x00F0xc00x070xc00x110xc00x160x000x180xc00x080xc00x120x000x160x000x130xc00x170x000x1b0x0050x000x840x00/0x000x960x00A0x000x070x000x050x000x040x000x0a0x000xff0x010x000x00$0x000x0b0x000x040x030x000x010x020x000x0a0x000x0c0x000x0a0x000x1d0x000x170x000x1e0x000x190x000x180x00#0x000x000x000x160x000x000x000x170x00...]. HTTP method names must be tokens
                at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:417)
                at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:261)
                at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
                at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)
                at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)
                at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
                at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
                at java.lang.Thread.run(Thread.java:748)
10-Jun-2021 01:06:05.482 INFO [http-nio-8181-exec-1] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header
 Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
        java.lang.IllegalArgumentException: Invalid character found in the request target [/web/#/login]. The valid characters are defined in RFC 7230 and RFC 3986
                at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:498)
                at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:261)
                at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
                at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)
                at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)
                at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
                at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
                at java.lang.Thread.run(Thread.java:748)
 

Комментарии:

1. Я думаю, что это было связано с корпоративными ограничениями на ПК пользователя. У ооолд, Т. Е. не было никаких проблем во время тестирования.