1

我已经用 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 - 工作方式相同。


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

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

4

2 回答 2

0

虽然 HTTP 规范RFC-2616服务器必须接受请求行的 absoluteuri,但这通常只用于代理请求。

对于 Jetty,请求行POST http://10.15.1.9:49302 HTTP/1.0被视为 HTTP/1.0 请求,并且属于RFC-1945 的请求行 URI规则,该规则声明 absoluteuri 始终是代理请求。

于 2012-08-11T04:50:36.753 回答
0

我已经报告了这个问题,现在已经修复了。

于 2012-10-19T20:11:18.353 回答