Wenn ich meine Anwendung in einer Apache Tomcat 8-Umgebung mit mehreren Servern bereitstelle, wird die Stapelverfolgung unterschritten. 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 mich jemand anweisen, wie ich eine solche Ausnahme beheben oder eingrenzen kann? Ich erhalte keinen Verweis auf eine meiner Anwendungsquelldateien. Ich habe versucht, zu googeln, und in den darin enthaltenen Links versuchen Sie, über https auf die http-URL zuzugreifen, was unwahrscheinlich erscheint. Ich erhalte diesen Fehler nicht, wenn die Anwendung auf einer einzelnen Tomcat 8-Instanz ausgeführt wird. Ich bekomme das nur in einer Multi-Server-Umgebung.
Ich teile auch die Meta-Tags, die ich auf jeder Seite eingebettet habe, wenn dies hilft, die Ursache zu identifizieren.
<%
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 auf einigen Seiten auch 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 dabei hilft, meinem Fehlerbehebungsversuch eine Richtung zu geben, ist dies hilfreich, da ich derzeit keine Ahnung habe, wo ich nachsehen soll.
Danke im Voraus.
quelle
Ich habe die gleiche Ausnahme bekommen, als ich lokal getestet habe. Das Problem war ein URL-Schema in meiner Anfrage.
Veränderung
https:// to http:// in your client url.
Wahrscheinlich hilft es.
quelle
Sie rufen den lokalen Server mit http : // localhost: 8080 / foo / bar an. Rufen Sie es mit https : // localhost: 8080 / foo / bar auf. Dies löst das Problem
quelle
Falls jemand Prahlerei benutzt:
Ändern Sie das Schema in
HTTP
oderHTTPS
, je nach Bedarf, bevor Sie die Ausführung ausführen.Briefträger:
Ändern Sie den URL-Pfad zu
http://
oderhttps://
in der URL-Adressequelle
Ich habe diese Ausnahme erhalten, die nichts mit TLS-Problemen zu tun hat. In meinem Fall stimmte der Content-Length-Header-Wert nicht mit der Body-Länge überein.
quelle
content-length
Headers dieses Problem löst.Content-Length
Headers wurde die Verzögerung behoben.Wenn Sie diese alte Frage beantworten (für andere, die möglicherweise helfen)
, wird das Problem gelöst, wenn Sie Ihr httpd conf richtig konfigurieren. Installieren Sie einen beliebigen httpd-Server, falls Sie keinen haben.
Hier meine Konfiguration auflisten.
Bearbeiten Sie die Datei wie oben und starten Sie httpd wie unten neu
Und dann
https
funktioniert die Anfrage mit mit ausnahmslos.Auch Anfrage mit
http
wird weiterleiten anhttps
! Keine Sorge.quelle
Ich habe diesen Fehler behoben, indem ich zwei Dinge im Chrome-Browser getan habe:
Diese Website enthält diese Informationen und andere Optionen: https://www.thesslstore.com/blog/fix-err-ssl-protocol-error/
quelle
Ich weiß, dass dies ein alter Thread ist, aber es gibt einen bestimmten Fall, in dem dies passieren kann:
Wenn Sie ein AWS-API-Gateway in Verbindung mit einer VPC-Verbindung verwenden und für den Network Load Balancer das Proxy-Protokoll v2 aktiviert ist, wird auch eine 400 Bad Request ausgeführt.
Ich habe den ganzen Nachmittag gebraucht, um es herauszufinden. Wenn es jemandem helfen könnte, wäre ich froh :)
quelle
Ich bekam die gleiche Ausnahme, wenn eine Seite geladen wurde,
Ich stellte fest, dass eine meiner Seiten-URL https anstelle von http war. Als ich dieselbe änderte, war der Fehler verschwunden.
quelle
Dies geschieht normalerweise, wenn Sie ein URI-Schema verwenden , das von dem Server, auf dem die App bereitgestellt wird, nicht unterstützt wird. Daher möchten Sie entweder überprüfen, welche Schemata Ihr Server unterstützt, und Ihre Anforderung
URI
entsprechend ändern , oder Sie möchten die Unterstützung für dieses Schema in Ihrem Server hinzufügen. Der Umfang Ihrer Bewerbung soll Ihnen bei der Entscheidung helfen.quelle
Es passierte mir, als ich denselben Port im SSH-Tunnel SOCKS zum Ausführen von Proxy im 8080-Port verwendet hatte und mein Server und mein Firefox-Browser-Proxy auf diesen Port eingestellt waren und dieses Problem hatten.
quelle
In meinem Fall musste ich den Browserverlauf / die Cookies löschen, um diesen Fehler zu beseitigen.
quelle