Java.lang.IllegalArgumentException: caractère invalide trouvé dans le nom de la méthode. Les noms de méthode HTTP doivent être des tokens

je tombe sous la trace de la pile lorsque je déploie mon application dans un environnement Apache Tomcat 8 multi-serveur. J'obtiens cette erreur fréquemment, et il semble qu'il bloque l'tomcat thread:

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)

est-ce que quelqu'un peut me dire comment résoudre ou restreindre une telle exception? Je ne reçois aucune référence à l'un de mes fichiers source. J'ai essayé de google autour, et dans les liens il dit, vous essayez d'accéder à l'url http par https, qui semble probable. Je ne reçois pas cette erreur, lorsque L'application tourne sur une seule instance Tomcat 8. Je reçois dans un environnement multi-serveur.

je partage aussi les méta-balises que j'ai intégrées sur chaque page, si cela aide à identifier la cause.

<%
    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">

je suis également en utilisant la suite, en quelques pages, ce qui est fondamentalement la même que ci-dessus:

<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" />

même si quelqu'un aide à donner une direction à ma tentative de dépannage, cela sera utile, car actuellement je n'ai aucune idée où chercher.

Merci d'avance.

40
demandé sur user2016012 2017-02-14 08:02:39

4 réponses

cette exception peut se produire lorsque vous essayez d'exécuter une requête https à partir d'un client sur un endpoint qui n'est pas activé par https. Le Client chiffrera les données de la requête lorsque le serveur attend des données brutes.

88
répondu Petar Tonev 2017-02-18 18:48:30

j'ai eu la même exception quand j'ai testé localement. Le problème était un schéma D'URL dans ma demande.

Modifier https:// to http:// in your client url.

probablement cela aide.

13
répondu Dev4World 2018-03-22 06:21:47

Vous appelez serveur local http: / / localhost: 8080 / foo / bar. Appeler avec https: / / localhost: 8080 / foo / bar. Cela résout le problème

3
répondu Shivan Sawant 2018-08-01 05:05:56

j'avais la même exception, chaque fois qu'une page a été prise en chargé,

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)

j'ai trouvé qu'une URL de ma page était https au lieu de http, quand j'ai changé la même, l'erreur a disparu.

0
répondu Asif Iquebal Ajazi 2018-07-03 00:56:45