Ich verwende Steg-9.2.2 mit CometD-3.0.1. In meinem Setup wird die folgende Warnung angezeigt. Es kommt ~ 4,5 mal an einem Tag:
2014-08-28 08:50:53.712:WARN:oejh.HttpParser:qtp607635164-15194: badMessage:
400 Illegal character for [email protected]{r=1,a=IDLE,uri=-}
Es gibt keine Details, die über die Warnmeldung behoben werden können. Ich habe bereits eine Anfrage protokolliert https://bugs.Eclipse.org/bugs/show_bug.cgi?id=443049 um eine detaillierte Warnung bereitzustellen.
In der Zwischenzeit möchte ich wissen, was diese Warnung verursacht? Kann ich das ignorieren oder gehen dadurch einige Nachrichten verloren?
Ich hatte den gleichen Fehler und stellte fest, dass er durch die Verwendung von https in der URL anstelle von http verursacht wurde. (Meine Anwendung unterstützt zu diesem Zeitpunkt nur http.) Nachdem https in http geändert wurde, wurde das Problem behoben.
Update Mai 2017
Für Benutzer von Jetty 9.3+ wird möglicherweise eine Protokollmeldung angezeigt, die diesen Antwortcode klarer macht.
Weitere Informationen finden Sie unter Header-Analysefehler nach Aktualisierung auf Jetty 9. .
Ursprüngliche Antwort
Das Bad Message: 400 Illegal Character
kann beim Parsen einer fehlerhaften HTTP-Anforderung auftreten.
Dies ist die HTTP-Fehlerantwort, die der Client sieht.
Einige (nicht alle) Situationen, in denen es vorkommen kann.
Diese Nachricht ist auf öffentlichen (mit dem Internet verbundenen) Servern üblich.
Sie haben schlechte HTTP-Anfragen. Warum?
Dieser Fehler kann, wie für mich, durch einen dummen kleinen Fehler verursacht werden.
Beim Testen auf meiner localhost Jetty-Instanz erhielt ich eine sehr ähnliche Meldung mit 400 ungültigen Zeichen. Dann wurde mir klar warum. Ich hatte einfach angenommen, dass die Antragsadresse auf meinem lokalen Steg war:
https://localhost:8080
die richtige Adresse war ungesichert:
http://localhost:8080
Keine Probleme danach.
Jetty ist vorsichtig mit detaillierten Fehlermeldungen, die vom Benutzer gesendete Daten enthalten, da diese Teil eines Angriffs sein können - selbst wenn sie nur an ein Terminal gesendet werden.
Wir können jedoch noch bessere Ergebnisse erzielen und einige bereinigte Daten protokollieren. Auf die Bugzilla einwirken
Nun, ich bin auf dieses Problem gestoßen, weil ich "http: //" als "https: //" verwechselt habe.