我有一个客户端发送带有绝对请求uri的http请求,并且未定义“主机”
有一个像Jetty这样的Web服务器拒绝了POST请求,说:
org.eclipse.jetty.http.BadMessageException:400:无主机
是否可以通过任何方式配置码头或任何其他Web服务器以接受没有主机的发布请求?
答案 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