我正在使用Jetty-9.2.2和CometD-3.0.1。我在设置中看到以下警告。它每天大约需要4,5次:
2014-08-28 08:50:53.712:WARN:oejh.HttpParser:qtp607635164-15194: badMessage:
400 Illegal character for HttpChannelOverHttp@5946f125{r=1,a=IDLE,uri=-}
没有可以从警告消息中调试的详细信息。我已经记录了请求https://bugs.eclipse.org/bugs/show_bug.cgi?id=443049以提供详细警告。
同时我想知道导致此警告的原因是什么?我可以忽略这个或因为这个而丢失了一些消息吗?
答案 0 :(得分:45)
我有同样的错误,然后发现它是由我在网址中使用https而不是http引起的。 (我的应用程序当时只支持http。) 将https更改为http后,它就解决了。
答案 1 :(得分:9)
2017年5月更新
对于Jetty 9.3+用户,您可能会看到一条日志消息,使此响应代码更加清晰。
有关详细信息,请参阅Header parse error after upgrade to Jetty 9.3。
原始答案
在解析错误的HTTP请求时可能会发生Bad Message: 400 Illegal Character
。
这是客户端看到的HTTP错误响应。
可能发生的一些(并非所有)情况。
此消息在公共(面向Internet)服务器上很常见。
您收到了错误的HTTP请求。为什么?
答案 2 :(得分:8)
对于我来说,这个错误可能是由于一个愚蠢的小错误造成的。
在我的localhost Jetty实例上测试时,我收到了一条非常类似的400非法字符消息。然后我意识到了原因。我简单地假设我当地Jetty的申请地址是:
https://localhost:8080
而正确的地址是不安全的:
http://localhost:8080
之后没问题。
答案 3 :(得分:5)
Jetty对包含用户发送数据的详细错误消息持谨慎态度,因为这些消息可能是攻击的一部分 - 即使只是回应终端。
但是,我们可以做得更好并记录一些消毒数据。代理bugzilla
答案 4 :(得分:0)
好吧,我遇到了这个问题,因为我错误地将“ http://”设置为“ https://”