http到https - 使浏览器请求http URL的相应​​https URL,而无需编辑所有页面并手动将所有URL更改为https?

Aar*_*ron 2 javascript https mixed-content

我有兴趣将我的整个网站从http切换到https.

我担心的是我有一些内容使用绝对的http URL.

我需要编辑每个页面,以便将这些URL更改为相对,但这可能需要一段时间才能完成.

我想知道的是,是否有办法通过Google跟踪代码管理器使用Javascript,以便将本地绝对URL重写为HTTPS而不是HTTP?

如果可以的话,它可以用作永久解决方案吗?

sid*_*ker 5

需要考虑的一个解决方案是内容安全策略upgrade-insecure-requests指令.

upgrade-insecure-requests指令指示用户代理处理所有站点的不安全URL(通过HTTP提供的URL),就像它们已被安全URL(通过HTTPS提供的URL)替换一样.此指令适用于需要重写大量不安全遗留URL的网站.

这相当于配置您的Web服务器,因此您的站点上的所有页面都可以通过此标头提供:

Content-Security-Policy: upgrade-insecure-requests
Run Code Online (Sandbox Code Playgroud)

因此,添加该标头的效果将是:对于您网站上提供httpsURL的任何页面,只要浏览器在其中一个页面中看到http嵌入(子)资源的URL,它是否为样式表的URL,脚本,图像,视频或其他任何东西 - 浏览器将自动(透明地)尝试从相应的httpsURL 获取资源.

有关更多详细信息,您可以查看升级不安全请求规范.

2018-05-11更新

upgrade-insecure-requests现在所有主流浏览器引擎(包括Edge 17+和Safari 10.3+)都支持该指令:

https://caniuse.com/#feat=upgradeinsecurerequests

现在使用它的缺点是,到目前为止它只在Firefox(自Firefox 42)和Chrome中得到支持.但它也:


PS,我在W3C工作,我们最近(最终)启用了对所有W3C站点资源的TLS/https访问 - 并且由于W3C有数十万(可能是数百万)页面,其中http包含嵌入式子资源的URL,我们的方式Content-Security-Policy: upgrade-insecure-requests通过在整个网站上提供标题来部分实现它.

w3.org上的支持HTTPS和HSTS的文章提供了有关部署详细信息的更多信息.