我正在尝试调用托管在WebLogic服务器中的WebService。每次我在“主机”标头中以空值调用它时,都会收到“ 400-错误的请求”响应。如果我将某些内容放入主机头中,则请求正常,并且可以使用WS。 RFC说:
客户端必须在所有HTTP / 1.1请求中包含主机标头字段 消息。如果请求的URI不包含Internet主机 被请求服务的名称,然后主机标头字段务必 赋予空值
当我发送带有空值的主机时,我发送的是不带主机名的URI,因此,通过RFC,我做得很好。
这是我的HTTP标头,收到错误请求:
POST /myContent/myWebService HTTP/1.1
SOAPAction: mySOAPcall
Connection: Keep-Alive
Host:
Content-Type: text/xml;charset=UTF-8
Content-Length: 709
如果我放置主机,它可以正常工作:
POST http://mydomain.com.br/myContent/myWebService HTTP/1.1
SOAPAction: mySOAPcall
Connection: Keep-Alive
Host: mydomain.com.br
Content-Type: text/xml;charset=UTF-8
Content-Length: 709
我是否在请求中缺少带有空主机头的内容?
答案 0 :(得分:0)
在查看RFC规范时,我找不到以下引用:
客户端必须在所有HTTP / 1.1请求消息中包含主机标头字段。如果所请求的URI不包含所请求服务的Internet主机名,则必须为Host标头字段提供一个空值
但是在3.2节中,我发现:
现在要求拒绝字段名周围的无效空格, 因为接受它表示一个安全漏洞。 ABNF 现在,定义标头字段的产品仅列出字段值。 (3.2节)
https://tools.ietf.org/html/rfc7230#section-3.2
是否有可能将空值解释为无效的空格?