如果我通过 .htaccess 强制我的图片托管网站使用 https 但嵌入了带有 http 链接的图片,会发生什么?

如果我通过 .htaccess 强制我的图片托管网站使用 https 但嵌入了带有 http 链接的图片,会发生什么?

我为自己的项目建立了一个小型图像托管服务,最近我将网站切换到了 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 文件被传输

相关内容