#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. Я думаю, что это было связано с корпоративными ограничениями на ПК пользователя. У ооолд, Т. Е. не было никаких проблем во время тестирования.