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

Anu*_*wal 26 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=-}  
Run Code Online (Sandbox Code Playgroud)

没有可以从警告消息中调试的详细信息.我已经记录了一个请求https://bugs.eclipse.org/bugs/show_bug.cgi?id=443049以提供详细的警告.

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

S. *_* Du 48

我有同样的错误,然后发现它是由我在网址中使用https而不是http引起的.(我的应用程序当时只支持http.)将https更改为http后,它就解决了.


Joa*_*elt 11

2017年5月更新

对于Jetty 9.3+用户,您可能会看到一条日志消息,使得此响应代码更加清晰.

有关详细信息,请参阅升级到Jetty 9.3后的标头解析错误.

原始答案

Bad Message: 400 Illegal Character在解析错误的HTTP请求期间可能会发生这种情况.

这是客户端看到的HTTP错误响应.

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

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

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

你有不好的HTTP请求.为什么?

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


Ben*_*ver 8

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

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

https://localhost:8080

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

http://localhost:8080

之后没问题.


gre*_*egw 5

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

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