2017-02-14 30 views
27

Я получаю ниже трассировку стека, когда я развертываю свое приложение в среде с несколькими серверами 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" /> 

Даже если кто-то помогает в предоставлении направление моей попытки поиска и устранения неисправностей, которые будут полезны, поскольку в настоящее время я понятия не имею, где искать.

Заранее спасибо.

ответ

53

Это исключение может возникнуть при попытке выполнить запрос https от клиента на конечной точке, который не включен https. Клиент будет шифровать данные запроса, когда сервер ожидает необработанные данные.

+1

Я не уверен, что понимаю этот ответ. У меня есть приложение Spring Boot 1.5.1, и я видел это исключение в своем журнале. Мое приложение отвечает только за SSL на порт 8443 (перенаправлено с порта 443) и имеет только один разъем для SSL. Вы говорите, что кто-то может попробовать http: вместо https: на порту 443? –

+2

Такие исключения случаются, когда существует несоответствие между тем, что ожидает сервер, и тем, что он получает. Вы сказали, что это один из возможных сценариев. Возможно, на вашем сервере есть конечная точка, которая не работает на https, но кто-то пытается получить к ней доступ таким образом? –

+1

Привет, Питер ... Проблема заключалась в том, что кто-то создал правило IP-таблиц для пересылки порта 80 на порт 8443, поэтому любой, кто попал на сайт с помощью http на порт 80, вызвал эту ошибку. Мы добавили разъем Tomcat для перенаправления портов с 8080 по 8443 и настроили правило IP-таблиц для перенаправления порта 80 на порт 8080, и проблема почти исчезла. Спасибо за ваш ответ! –

 Смежные вопросы

  • Нет связанных вопросов^_^