如何配置任何Web服务器以接受没有主机和绝对请求URIS的POST请求?

时间:2018-08-02 11:28:45

标签: web-services webserver jetty

我有一个客户端发送带有绝对请求uri的http请求,并且未定义“主机”

有一个像Jetty这样的Web服务器拒绝了POST请求,说:

  

org.eclipse.jetty.http.BadMessageException:400:无主机

是否可以通过任何方式配置码头或任何其他Web服务器以接受没有主机的发布请求?

1 个答案:

答案 0 :(得分:1)

https://tools.ietf.org/html/rfc7230#section-5.4

客户端必须发送主机标头以使其符合HTTP / 1.1

如果您在目标中发送绝对URI,则Host标头必须与在该绝对URI目标中找到的标头相同。

请注意,HTTP / 1.1规范甚至说明了...

  

服务器必须以400(错误请求)状态码响应任何      缺少主机标头字段和任何内容的HTTP / 1.1请求消息      请求消息,其中包含多个主机标头字段或一个      主机标头字段的字段值无效。

在这种情况下,始终要求以错误400进行响应。

如果使用HTTP / 2,则可以避免这种情况,因为目标URI和主机标头之间的分隔已通过:authority伪标头解决。

请参见https://httpwg.org/specs/rfc7540.html#rfc.section.8.1.2.3