我们运行一个使用 WCF 托管的网站。该网站托管在: https: //foo.com,并使用以下命令注册 ssl 证书:
netsh http add sslcert hostnameport=foo.com:443
Run Code Online (Sandbox Code Playgroud)
当我们浏览服务器上的网站时,一切都很好,并且证书是有效的。
服务器前面有一个负载均衡,它监听 bar.com,然后将请求重定向到我们的服务器。负载均衡器不会重写获取 URL,而只会重写主机标头。
重写后的标头如下所示:
GET https://foo.com/ HTTP/1.1
Host: bar.com
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)
现在我们遇到一些问题,表明 ssl 证书在这种情况下无效。
Loadbalancer本身有一个注册监听https://bar.com的证书
问题:
小智 7
好吧,参考RFC2616:
如果 Request-URI 是绝对 URI,则主机是 Request-URI 的一部分。请求中的任何主机头字段值都必须被忽略。
所以,回到你的问题:这是允许的,但这是一个坏主意,因为它会造成混乱,最好使用相对路径。IE
GET /path HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
代替
GET https://foo.com/path HTTP/1.1.
Run Code Online (Sandbox Code Playgroud)
修改负载平衡配置来执行此操作。或者使两个值相同。
如果 Host 标头的值与请求 URI 不同,则 URI 优先于 Hosts 标头。
| 归档时间: |
|
| 查看次数: |
5718 次 |
| 最近记录: |