Jetty-9警告:badMessage:400非法角色

时间:2014-09-02 14:06:34

标签: jetty jetty-9

我正在使用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以提供详细警告。

同时我想知道导致此警告的原因是什么?我可以忽略这个或因为这个而丢失了一些消息吗?

5 个答案:

答案 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错误响应。

可能发生的一些(并非所有)情况。

  • EOL不是“\ r \ n”(CR + LF)(HTTP规范要求)
  • 无法识别HTTP方法令牌或
  • 后面有无效的空格
  • 无法识别HTTP版本或包含无效字符
  • HTTP标头名称不符合规范
  • HTTP标头值不符合规范

此消息在公共(面向Internet)服务器上很常见。

您收到了错误的HTTP请求。为什么?

  • 合法的HTTP客户端有错误
  • 合法HTTP客户端未遵循HTTP规范
  • 非HTTP客户端尝试连接到您的服务器(例如尝试在SSL / TLS / HTTPS端口上使用非加密HTTP,或者甚至像尝试与您的HTTP通信的SMTP / IMAP电子邮件客户端一样奇怪端口)
  • 恶意客户端正试图探测您的系统是否存在弱点

答案 2 :(得分:8)

对于我来说,这个错误可能是由于一个愚蠢的小错误造成的。

在我的localhost Jetty实例上测试时,我收到了一条非常类似的400非法字符消息。然后我意识到了原因。我简单地假设我当地Jetty的申请地址是:

https://localhost:8080

而正确的地址是不安全的:

http://localhost:8080

之后没问题。

答案 3 :(得分:5)

Jetty对包含用户发送数据的详细错误消息持谨慎态度,因为这些消息可能是攻击的一部分 - 即使只是回应终端。

但是,我们可以做得更好并记录一些消毒数据。代理bugzilla

答案 4 :(得分:0)

好吧,我遇到了这个问题,因为我错误地将“ http://”设置为“ https://”