webentwicklung-frage-antwort-db.com.de

Jetty-9-Warnung: badMessage: 400 Unzulässiges Zeichen

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?

25
Anuj Khandelwal

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.

47
S. Du

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.

  • Die EOL ist nicht "\ r\n" (CR + LF) (HTTP-Spezifikation erforderlich)
  • Das HTTP-Methodentoken wird entweder nicht erkannt oder enthält ein ungültiges Leerzeichen
  • Die HTTP-Version wird nicht erkannt oder enthält ungültige Zeichen
  • Der Name des HTTP-Headers folgt nicht der Spezifikation
  • Der HTTP-Header-Wert folgt nicht der Spezifikation

Diese Nachricht ist auf öffentlichen (mit dem Internet verbundenen) Servern üblich.

Sie haben schlechte HTTP-Anfragen. Warum?

  • Ein legitimer HTTP-Client weist einen Fehler auf
  • Ein legitimer HTTP-Client folgt nicht der HTTP-Spezifikation
  • Ein Nicht-HTTP-Client hat versucht, eine Verbindung zu Ihrem Server herzustellen (z. B. der Versuch, unverschlüsseltes HTTP an einem SSL/TLS/HTTPS-Port zu verwenden, oder etwas so Seltsames wie ein SMTP/IMAP-E-Mail-Client, der versucht, mit Ihrem HTTP-Port zu kommunizieren).
  • Ein böswilliger Client versucht, Ihr System auf Schwachstellen zu untersuchen
10
Joakim Erdfelt

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.

8
Ben Weaver

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

5
gregw

Nun, ich bin auf dieses Problem gestoßen, weil ich "http: //" als "https: //" verwechselt habe.

0
vincent zhang