我刚刚目睹了一个(对我而言)我不太理解的奇怪浏览器行为。在我将 Nginx 配置为支持 HSTS 后,我使用以下 index.html 测试了一个虚拟主机:
<p>Internal Source:</p>
<img src="Picture1.jpg">
<p>Internal HTTP Source:</p>
<img src="http://samedomain.com/Picture1.jpg">
HSTS 通过以下方式设置:
add_header Strict-Transport-Security "max-age=31536000" always;
如果我正确理解 HSTS,浏览器会在开始加载资源之前执行类似 s/http://samedomain.com/https://samedomain.com/ 的操作。因为我只有 443 次收听并且所有资源都在加载,所以我认为我是对的。
由于一切正常,我不知道为什么每个浏览器(经过最新测试:Safari、Firefox、Chrome)都指出连接不安全。甚至检查员都说所有资源都通过安全连接加载。
PS:使用“add_header Content-Security-Policy upgrade-insecure-requests;” 设置没有浏览器抱怨。但我无法设置 UIR,因为有人可能必须加载不安全的内容。在这种情况下,它显然应该抱怨,但它仍然应该显示所有内容。
我希望有人能启发我:-)