对认可 CaCert 机构的用户自动以 HTTPS 进行重定向

对认可 CaCert 机构的用户自动以 HTTPS 进行重定向

我对我的域名使用 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 的用户,该解决方案也适用。

相关内容