J'utilise jetty-9.2.2 avec CometD-3.0.1. Je vois ci-dessous un avertissement dans ma configuration. Il arrive ~ 4,5 fois par jour .:
2014-08-28 08:50:53.712:WARN:oejh.HttpParser:qtp607635164-15194: badMessage:
400 Illegal character for HttpChannelOverHttp@5946f125{r=1,a=IDLE,uri=-}
Aucun détail ne peut être débogué à partir du message d'avertissement. J'ai déjà enregistré une demande https://bugs.Eclipse.org/bugs/show_bug.cgi?id=443049 pour fournir un avertissement détaillé.
En attendant, je veux savoir ce qui cause cet avertissement? Puis-je ignorer cela ou certains messages sont perdus à cause de cela?
J'ai eu la même erreur, puis j'ai découvert qu'elle était causée par l'utilisation de https dans l'url au lieu de http. (Mon application ne prend en charge que http à ce moment-là.) Après avoir changé https en http, il a été résolu.
Mise à jour de mai 2017
Pour les utilisateurs de Jetty 9.3+, vous pouvez voir un message de journal qui rend ce code de réponse plus clair.
Voir Erreur d'analyse d'en-tête après la mise à niveau vers Jetty 9. pour plus de détails.
Réponse originale
Le Bad Message: 400 Illegal Character
peut se produire lors de l'analyse d'une mauvaise requête HTTP.
C'est la réponse d'erreur HTTP que le client voit.
Certaines (pas toutes) situations dans lesquelles cela peut se produire.
Ce message est commun sur les serveurs publics (face à Internet).
Vous avez de mauvaises requêtes HTTP qui arrivent. Pourquoi?
Cette erreur peut être causée, comme pour moi, par une petite erreur idiote.
Lors des tests sur mon instance de la jetée de l'hôte local, j'ai reçu un message très similaire de 400 caractères illégaux. J'ai alors compris pourquoi. J'avais simplement supposé que l'adresse d'application sur ma jetée locale était:
https://localhost:8080
alors que l'adresse correcte n'était pas sécurisée:
http://localhost:8080
Aucun problème après ça.
Jetty se méfie des messages d'erreur détaillés qui incluent les données envoyées par l'utilisateur, car elles peuvent faire partie d'une attaque - même si elles ne sont transmises qu'à un terminal.
Cependant, nous pouvons faire mieux et enregistrer certaines données aseptisées. Agir sur le bugzilla
Eh bien, j'ai rencontré ce problème parce que j'ai confondu le "http: //" avec "https: //"