Wenn ich meine Anwendung in einer Apache Tomcat 8-Umgebung mit mehreren Servern implementiere, ist die Stack-Trace-Einstellung geringer. Ich erhalte diesen Fehler häufig und es scheint, dass er den Tomcat-Thread blockiert:
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)
Kann mir jemand sagen, wie ich eine solche Ausnahme behandeln oder eingrenzen kann? Ich bekomme keinen Verweis auf meine Anwendungsquelldateien. Ich habe versucht, zu googeln, und in den Links, die dort angegeben sind, versuchen Sie über https auf http-URL zuzugreifen, was unwahrscheinlich erscheint. Diese Fehlermeldung wird nicht angezeigt, wenn die Anwendung auf einer einzelnen Tomcat 8-Instanz ausgeführt wird. Ich bekomme dies nur in einer Multi-Server-Umgebung.
Ich teile auch die Metatags, die ich auf jeder Seite eingebettet habe, wenn dies die Ursache identifiziert.
<%
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">
Ich verwende auch auf einigen Seiten Folgendes, was im Grunde dasselbe ist wie oben:
<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" />
Selbst wenn jemand hilft, meinem Fehlerbehebungsversuch eine Richtung zu geben, wird dies nützlich sein, da ich momentan keine Ahnung habe, wo ich nachschauen muss.
Danke im Voraus.
Diese Ausnahme kann auftreten, wenn Sie versuchen, eine https-Anforderung von einem Client auf einem Endpunkt auszuführen, der nicht für https aktiviert ist. Der Client verschlüsselt die Anfragedaten, wenn der Server Rohdaten erwartet.
Ich habe die gleiche Ausnahme, als ich vor Ort getestet habe. Das Problem war ein URL-Schema in meiner Anfrage.
https:// to http:// in your client url.
ändern
Wahrscheinlich hilft es.
Sie rufen den lokalen Server mit http : // localhost: 8080/foo/bar auf. Rufen Sie es mit https : // localhost: 8080/foo/bar auf. Das löst das Problem
Ich habe diese Ausnahme unabhängig von SSL-Problemen erhalten. In meinem Fall stimmte der Content-Length-Header-Wert nicht mit der Body-Länge überein.
Beantwortung dieser alten Frage (für andere, die helfen können)
Durch die korrekte Konfiguration Ihres httpd conf wird das Problem behoben. Installieren Sie einen httpd-Server, falls Sie noch keinen haben.
Meine Konfig hier aufführen.
[[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
...
...
...
bearbeiten Sie die Datei wie oben und starten Sie httpd anschließend erneut
[[email protected] ~]$ Sudo service httpd restart
Und dann funktioniert die Anfrage mit https
ausnahmslos.
Auch eine Anfrage mit http
wird an https
weitergeleitet! Keine Bange.
Es passierte mir, als ich in Ssh-Tunnel-SOCKS denselben Port zum Ausführen von Proxy im 8080-Port hatte und mein Server und mein Firefox-Browserproxy auf diesen Port eingestellt waren und dieses Problem bekamen.
Ich bekam dieselbe Ausnahme, wenn eine Seite geladen wurde.
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)
Ich habe festgestellt, dass eine meiner Seiten-URLs https statt http war. Als ich dasselbe geändert habe, war der Fehler weg.
Dies geschieht normalerweise, wenn Sie ein URI-Schema verwenden, das nicht von dem Server unterstützt wird, auf dem die App bereitgestellt wird. Daher möchten Sie entweder prüfen, welche von Ihrem Server unterstützten Schemata verwendet werden, und Ihre Anforderung URI
entsprechend ändern, oder Sie möchten möglicherweise die Unterstützung für dieses Schema in Ihrem Server hinzufügen. Der Umfang Ihrer Bewerbung sollte Ihnen bei der Entscheidung helfen.