我为自己的项目建立了一个小型图像托管服务,最近我将网站切换到了 https,运行良好。
现在我创建了一个带有重写规则的 .htaccess 文件如这里所述所以如果我浏览http://myservice/image.jpg
它会自动将我重定向到https://myservice/image.jpg
我的问题是,如果我嵌入图片的 http 链接,浏览器会如何反应。重写规则是否仍然有效,图片是否将通过 http 传输s或者它会使用未加密的 http?
我已经用 Chrome 测试过了,图片可以显示,但我不确定它是通过 https 还是 http 传输的。有没有案例研究可以解答我的问题?
答案1
浏览器将对嵌入图像发送单独的请求,因此,该图像将被重定向到 https。即便如此,某些浏览器也可能因为 http 链接而警告用户“此页面上的某些资源不安全”。
为了避免这两个问题,您应该重写页面或应用程序中的链接以省略前导方案和主机名:例如
<a href="/img.png">
代替
<a href="http://example.com/img.png">
然后,浏览器将自动从与页面相同的方案(即 https)和主机名中获取图像,这样您就避免了重定向到 https 和/或向用户发出警告。
此外,如果您确实需要指定域,您仍然可以省略协议规范:
<a href="//example.com/img.png">
用于加载包含链接的页面的协议将被添加在前面。因此,如果上述链接位于页面上,https://example.com/index.php
则该链接将指向https://example.com/img.png
答案2
我分析了 http 和 https 站点的日志文件,似乎浏览器请求 http 文件,被重定向,然后传输 https 文件。在日志中,我看到两个文件中都有文件请求,但我假设只有 https 文件被传输