检测HTTP或HTTPS,然后在JavaScript中强制使用HTTPS
有没有什么办法来检测HTTP或HTTPS,然后用JavaScript强制使用HTTPS?
我有一些代码检测HTTP或HTTPS,但我不能强迫它使用https:
我正在使用window.location.protocol属性来设置网站是https:
然后刷新页面,希望重新加载一个新的https'ed URL加载到浏览器。
if (window.location.protocol != "https:") { window.location.protocol = "https:"; window.location.reload(); }
尝试这个
if (location.protocol != 'https:') { location.href = 'https:' + window.location.href.substring(window.location.protocol.length); }
这不是个好主意,因为你只是暂时将用户redirect到https,浏览器不保存这个redirect。
你描述了Web服务器(Apache,Nginx等) http 301,http 302的任务
这个怎么样?
if (window.location.protocol !== 'https:') { window.location = 'https://' + window.location.hostname + window.location.pathname + window.location.hash; }
不过,理想情况下,你可以在服务器端进行。
设置location.protocol
导航到一个新的URL :
if (location.protocol !== "https:") location.protocol = "https:";
火狐49有一个错误,其中https
工作,但https:
不(NS_ERROR_UNEXPECTED) 。 据说在Firefox 54中是固定的 。
if (location.protocol == 'http:') location.href = location.href.replace(/^http:/, 'https:')
不是一个Javascript方式来回答这个问题,但如果你使用CloudFlare,你可以编写页面规则 ,redirect用户到HTTPS更快,它是免费的。 在CloudFlare的页面规则中看起来像这样:
您好我使用这个解决scheme完美的作品。无需检查,只需使用https。
<script language="javascript" type="text/javascript"> document.location="https:" + window.location.href.substring(window.location.protocol.length, window.location.href.length); </script>
迎接BrAiNee
<script type="text/javascript"> function showProtocall() { if (window.location.protocol != "https") { window.location = "https://" + window.location.href.substring(window.location.protocol.length, window.location.href.length); window.location.reload(); } } showProtocall(); </script>
我刚刚通过Pui Cdm所testing的所有脚本变体,包括上面的答案以及许多其他使用php,htaccess,服务器configuration和Javascript的脚本,结果是脚本
<script type="text/javascript"> function showProtocall() { if (window.location.protocol != "https") { window.location = "https://" + window.location.href.substring(window.location.protocol.length, window.location.href.length); window.location.reload(); } } showProtocall(); </script>
由vivek-srivastava提供最好的作品,你可以添加进一步的安全性在Java脚本。