我对我的域名使用 CaCert 证书。
我希望仅当用户认可 CaCert 权威机构时才将用户重定向到 HTTPS。
做这个的最好方式是什么 ?
答案1
我做了一些小技巧,比如用 https 打开图像,如果成功则重定向到 https 版本:
<script>
function redirectHTTPS() {
if (window.location.protocol !== 'https:') {
window.location = 'https://' + window.location.hostname + window.location.pathname + window.location.hash;
}
}
</script>
<img src="https://www.example.net/images/logo.png" alt="test HTTPS" onLoad="redirectHTTPS()" height="0" width="0"/>
答案2
在 http 页面中,包含一个仅在 https 中可用的 javascript 文件:
<script src="https://example.net/redirect.js"></script>
js文件的内容:
window.location = 'https://' + window.location.hostname + window.location.pathname + window.location.hash;
请注意,对于可以连接到 https 的用户来说,此解决方案更快(因为它阻止了 dom 解析),但对于无法连接到 https 的用户来说,它会比基于图像的解决方案稍慢一些(但它只会减慢一点点,握手失败的时间)
该解决方案适用于 CaCert,但如果您想重定向由于其他原因(没有 SNI 的旧浏览器等)无法连接到 https 的用户,该解决方案也适用。