Я получаю ниже трассировку стека, когда я развертываю свое приложение в среде с несколькими серверами Apache Tomcat 8. Я получаю эту ошибку часто, и кажется, что это блокирует кот нить:java.lang.IllegalArgumentException: Недопустимый символ, найденный в имени метода. Имена меток HTTP должны быть токенами
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)
Может ли один направлять меня, как устранить или сузить такой Exeption? Я не получаю никакой ссылки ни на один из моих исходных файлов приложения. Я пытался 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" />
Даже если кто-то помогает в предоставлении направление моей попытки поиска и устранения неисправностей, которые будут полезны, поскольку в настоящее время я понятия не имею, где искать.
Заранее спасибо.
Я не уверен, что понимаю этот ответ. У меня есть приложение Spring Boot 1.5.1, и я видел это исключение в своем журнале. Мое приложение отвечает только за SSL на порт 8443 (перенаправлено с порта 443) и имеет только один разъем для SSL. Вы говорите, что кто-то может попробовать http: вместо https: на порту 443? –
Такие исключения случаются, когда существует несоответствие между тем, что ожидает сервер, и тем, что он получает. Вы сказали, что это один из возможных сценариев. Возможно, на вашем сервере есть конечная точка, которая не работает на https, но кто-то пытается получить к ней доступ таким образом? –
Привет, Питер ... Проблема заключалась в том, что кто-то создал правило IP-таблиц для пересылки порта 80 на порт 8443, поэтому любой, кто попал на сайт с помощью http на порт 80, вызвал эту ошибку. Мы добавили разъем Tomcat для перенаправления портов с 8080 по 8443 и настроили правило IP-таблиц для перенаправления порта 80 на порт 8080, и проблема почти исчезла. Спасибо за ваш ответ! –