java.lang.IllegalArgumentException: Ungültige Zeichen (CR oder LF) gefunden in Methode name
Ich habe eine Spring-MVC-Anwendung, die Sie auf Tomcat8. Einmal in ein oder zwei Tage bekomme ich eine Ausnahme in meiner log-Datei
15-Jun-2016 10:43:39.832 INFO [http-nio-8080-exec-50] 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 (CR or LF) found in method name
at org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:228)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
hat jemand eine Idee, was das sein könnte?
Sieht aus wie eingehenden HTTP-request-header ist ungültig. Als Fehlermeldung sagt, die Anfrage-header enthält verbotene Zeichen im HTTP-Methode name (end-of-line), also die Anfrage-parser schlägt fehl, mit Ausnahme. Es ist also nicht ein Problem in Ihrem code. Sie können entweder ignorieren oder bitten Sie den Absender, zu überprüfen, Anfrage Gültigkeit.
Vagaytsev - Anfrage wird vom Web - & wir haben LB-setup mit nginx. Auf dem server wird der oben genannten Fehler und wirft Bad Gateway. scalescale.com/tips/nginx/502-bad-gateway-error-using-nginx hat nicht geholfen 🙁
Ich glaube, diese Ausnahme zu tun hat, mehr mit der SSL-Einrichtung, die gleiche (naja, fast ähnlich) Krieg arbeitet auf der Bühne Maschinen -, wo wir Zugang mit http - in der Erwägung, dass die test-Produktion-setup (mit https) ist, wo wir vor dieser Frage. Check unsere nginx-Konfiguration. Im Fall, dass Sie haben gefunden die fix - tun, lass es mich wissen 🙂
Hi VadOs, Ist der tomcat läuft in der cloud-Maschine? wenn ja, bitte - (cyber4.org/three-legged-pig/...) und (confluence.atlassian.com/confkb/...)
Jungs, Sie haben um irgendwelche Fortschritte?
Vagaytsev - Anfrage wird vom Web - & wir haben LB-setup mit nginx. Auf dem server wird der oben genannten Fehler und wirft Bad Gateway. scalescale.com/tips/nginx/502-bad-gateway-error-using-nginx hat nicht geholfen 🙁
Ich glaube, diese Ausnahme zu tun hat, mehr mit der SSL-Einrichtung, die gleiche (naja, fast ähnlich) Krieg arbeitet auf der Bühne Maschinen -, wo wir Zugang mit http - in der Erwägung, dass die test-Produktion-setup (mit https) ist, wo wir vor dieser Frage. Check unsere nginx-Konfiguration. Im Fall, dass Sie haben gefunden die fix - tun, lass es mich wissen 🙂
Hi VadOs, Ist der tomcat läuft in der cloud-Maschine? wenn ja, bitte - (cyber4.org/three-legged-pig/...) und (confluence.atlassian.com/confkb/...)
Jungs, Sie haben um irgendwelche Fortschritte?
InformationsquelleAutor VadOs | 2016-06-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Fehler wird verursacht durch fehlerhafte HTTP-Anforderung.
In den meisten Fällen wird diese Meldung ist irreführend, da dieser Fehler in der Regel passiert, wenn Sie versuchen, Zugriff auf nicht gesicherte Seite per https.
Tomcat nicht wissen, dass der eingehende request wird verschlüsselt und versucht zu interpretieren, diese Anforderung als einfache, ungesicherte http-Anfrage.
Dies ist, wie es Aussehen könnte in den Protokollen:
Standard, richtigen HTTP-Anfrage (http://localhost:8080)
HTTPS-Anforderung (https://localhost:8080)
Wie Sie sehen können, im zweiten Anfrage, gibt es unbekannte chars, anstatt der richtige name HTTP-Methode (z.B. GET)
Also, wenn Ihr server keine SSL-Konfiguration und der Fehler tritt auf, "wenn in ein oder zwei Tage", dann wohl jemand versucht, Sie zu erreichen, Ihre website durch https (wahrscheinlich irgendeine Art von bot)
Irgendwann jemand versucht zu senden, aber ungesicherte fehlerhaften plain-HTTP-Anforderung (durch seine eigene Anwendung - bot oder andere benutzerdefinierte client).
Nein, das nicht, lassen Sie tomcat stoppen.
könnte es sein, den google-bot ?
InformationsquelleAutor Maciej Marczuk
Nur hinzufügen, dass dieses problem auch mit springboot.
Ich war mit einer HTTPS-url, aber meinem lokalen server nicht mit SSL, also wechselte ich die url zum HTTP, und es funktionierte.
InformationsquelleAutor Maelig
Überprüfen Sie die Anfrage gesendet.
Wenn der Endpunkt nicht https aktiviert ist, übergeben Sie die Anforderung mit http.
InformationsquelleAutor Sarat Chandra
Ich auch vor dem gleichen Problem mit HTTP-POST-Anforderung - Das problem war "JSON-Daten nicht korrekt war". Ich hatte ein enum-Attribut in der Klasse, die ich war die übergabe falsch (Schreibfehler) im Objekt. Und ich war immer von dieser Ausnahme.
InformationsquelleAutor Bhupendra Kumar
Traf ich die gleiche Fehlermeldung und es kann absolut nichts zu tun haben mit deiner Tomcat-Konfiguration. Es fuhr mich verrückt versucht, den Fehler zu finden. Ich war für mehrere Anwendungen aus sechs Domänen, die nur mit einer der domains die Herstellung der Proxy Error 502. 'Ungültige Zeichen' Nachricht findet sich dann in der Tomcat-log catalina.aus:
In meinem Fall, ich bin das senden von Anfragen an Tomcat-Anwendungen aus dem Apache httpd mit einem proxy. Der proxy-Direktiven in httpd virtuellen host, normalerweise so konfiguriert, in /etc/httpd/conf.d/virtualhosts.conf. Die proxy-erste leitet alle unverschlüsselten http-Anfragen auf port 80 auf den port 443.
Den umgeleiteten Anfrage wird dann behandelt wie eine normale eingehende, verschlüsselte https-Anfrage.
Die falsche Konfiguration. KOPIEREN SIE DIESE!
Beachten Sie die zwei Zeilen:
Die Richtlinien sagen Apache zum senden der Anforderung an den Prozess lauscht auf port 8081 als eine verschlüsselte Anfrage. Dies war Tippfehler meinerseits. Das Protokoll sollte http. Tomcat ist nicht der Umgang mit Verschlüsselung, httpd ist der Umgang mit Verschlüsselung. Also Tomcat ist, empfangen Sie eine verschlüsselte Anfrage auf einem nicht-verschlüsselten Anschluss was in der 'Ungültiges Zeichen" - Fehler außerordentlich gut erklärt Maciej Marczuk (https://stackoverflow.com/users/1545775/maciej-marczuk) Antwort. Vielen Dank für cluing mich zu finden, meine Tippfehler.
Den proxy-Richtlinien sollten sein:
Hoffe, das jemand hilft.
Cheers.
InformationsquelleAutor Ted Spradley
Dieser Fehler kann auftreten, weil der schlechte port.
Eigentlich bemerken, wenn Sie wollen, akzeptieren werfen, HTTPS, Standard-Tomcat-port ist 8443 :
https://localhost:8443
beim ändern der Anschluss-und keystore-aber immer noch abrufen mit 8080 statt 8443
Damit bin ich nicht einverstanden. Ich gepostet diesen Kommentar, denn ich hatte genau den selben Fehler aufgrund der schlechten port
Das ist in Ordnung, aber bitte schreiben Sie Ihre Antwort auch die Frage in irgendeiner Art und Weise. Ihre Antwort könnte auch Lesen "Beachten Sie, dass wenn Sie möchten, übernehmen werfen HTTP, Standard-Tomcat-port ist 8080", und es würden die gleichen Angaben enthalten: information über Standard-ports. Nicht über diese Informationen, um sein problem ist, warum ich sagen, es muss die Frage nicht beantworten. Die Tatsache ist richtig, aber so ist die Tatsache, dass zu sagen FTP ist standardmäßig port 21. Bis Sie zeigen, wie die Tatsache und das problem, das sind Verwandte, Sie sind nicht die Beantwortung der Frage, Sie sagen nur Tatsachen.
InformationsquelleAutor hadf