我已经用Jetty取代了Tomcat。现在,对于第三方系统发送的请求,我有400个http错误代码。如我所见,与curl和网络浏览器发送的测试的区别在于http动词中的url:

POST http://10.15.1.9:49302 HTTP/1.0
Host: 10.15.1.9
Content-Type: text/xml
Content-Length: 71065
User-Agent: hpost/0.1
Pragma: no-cache
Accept: */*


此请求无效,但使用相对URL(例如POST / HTTP/1.0)的发布效果很好。谁错了?我无法更改第三方系统,因此,可以让码头接受此类请求吗?

我试过了Jetty v6.1.26,v7.6.4和v8.1.4-工作原理相同。



好的,我认为原因是网址后缺少尾部斜杠,POST http://10.15.1.9:49302/ HTTP/1.0工作正常。

是否有人知道是码头问题还是客户端发送了格式错误的网址?

最佳答案

虽然HTTP规范RFC-2616表示请求行的server must accept absoluteuri's,但这通常仅用于代理请求。

对于Jetty而言,请求行POST http://10.15.1.9:49302 HTTP/1.0被视为HTTP / 1.0请求,并且属于RFC-1945 for Request Line URIs规则,该规则规定absoluteuri始终是代理请求。

10-05 21:16
查看更多