Ответ 1
Это исключение может возникнуть при попытке выполнить запрос HTTPS от клиента на конечной точке, для которой не включен HTTPS. Клиент будет шифровать данные запроса, когда сервер ожидает необработанные данные.
Я получаю ниже трассировку стека, когда я развертываю свое приложение в среде с несколькими серверами Apache Tomcat 8. Я часто получаю эту ошибку, и кажется, что она блокирует поток tomcat:
INFO [http-nio-80-exec-4461] org.apache.coyote.http11.AbstractHttp11Processor.process Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens
at org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:233)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1524)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1480)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Может ли кто-нибудь указать мне, как устранить или ограничить такое исключение? Я не получаю никакой ссылки ни на один из моих исходных файлов приложения. Я пытался google, и в ссылках, которые он сказал, вы пытаетесь получить доступ к http url через https, что кажется маловероятным. Я не получаю эту ошибку, когда приложение работает на одном экземпляре Tomcat 8. Я получаю это только в многосерверной среде.
Я также использую метатеги, которые я встроил на каждую страницу, если это помогает определить причину.
<%
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Cache-Control", "no-store");
response.setDateHeader("Expires", 0);
response.setHeader("Pragma", "no-cache");
%>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
<meta name="viewport" content="width=device-width, initial-scale=1">
Я также использую следующее на нескольких страницах, которые в основном такие же, как указано выше:
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Expires" content="-1" />
<meta http-equiv="Cache-Control" content="private" />
<meta http-equiv="Cache-Control" content="no-store" />
<meta http-equiv="Pragma" content="no-cache" />
Даже если кто-то помогает в определении направления моей попытки устранения неполадок, это будет полезно, поскольку в настоящее время я понятия не имею, где искать.
Спасибо заранее.
Это исключение может возникнуть при попытке выполнить запрос HTTPS от клиента на конечной точке, для которой не включен HTTPS. Клиент будет шифровать данные запроса, когда сервер ожидает необработанные данные.
У меня такое же исключение, когда я тестировал локально. Проблема заключалась в схеме URL-адреса в моем запросе.
Измените https://to http://in your client url.
Наверное, это помогает.
Вы вызываете локальный сервер с http ://localhost: 8080/foo/bar. Вызовите его с помощью https ://localhost: 8080/foo/bar. Это решает проблему
Я получил это исключение, не связанное с какими-либо проблемами SSL. В моем случае значение заголовка Content-Length не соответствует длине тела.
Отвечая на этот старый вопрос (для других, которые могут помочь)
Правильная настройка вашего httpd conf поможет решить проблему. Установите любой httpd сервер, если у вас его нет.
Список моего конфига здесь.
[[email protected] ~]$ cat /etc/httpd/conf/httpd.conf | grep shirts | grep -v "#"
ProxyPass /shirts-service http://local.box002.com:16743/shirts-service
ProxyPassReverse /shirts-service http://local.box002.com:16743/shirts-service
ProxyPass /shirts http://local.box002.com:16443/shirts
ProxyPassReverse /shirts http://local.box002.com:16443/shirts
...
...
...
отредактируйте файл, как указано выше, а затем перезапустите httpd, как показано ниже
[[email protected] ~]$ sudo service httpd restart
И тогда запрос с https
будет работать без исключения.
Также запрос с http
перенаправит на https
! Не волнуйтесь.
Я получал такое же исключение, всякий раз, когда страница загружалась,
NFO: Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens
at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:139)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1028)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
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)
Я обнаружил, что одним из URL моей страницы был https вместо http, когда я изменил то же самое, ошибка исчезла.
Обычно это происходит, когда вы используете схему URI, которая не поддерживается сервером, на котором развертывается приложение. Таким образом, вы можете либо проверить, какие все схемы поддерживаются вашим сервером, так и изменить ваш URI
запрос соответственно, или вы можете добавить поддержку этой схемы на свой сервер. Объем вашего приложения должен помочь вам принять решение об этом.
Это случилось со мной, когда у меня был один и тот же порт, используемый в SOCKS туннеле SOCKS для запуска прокси на 8080 порту, и мой сервер и прокси браузера Firefox были настроены на этот порт и получили эту проблему.
Эту ошибку удалось устранить, выполнив 2 действия в браузере Chrome:
На этом сайте есть эта информация и другие опции: https://www.thesslstore.com/blog/fix-err-ssl-protocol-error/