HTTPまたはHTTPSを検出してからJavaScriptでHTTPSを強制的に使用する方法はありますか?
HTTPまたはHTTPSを検出するためのコードがいくつかありますが、強制的にhttps:
を使用することはできません。
私はwindow.location.protocolプロパティを使用してサイトをhttps:
に設定し、それからページを更新してブラウザにロードされた新しいhttps付きの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);
}
location.protocolを設定すると新しいURLに移動します 。何も解析/スライスする必要はありません。
if (location.protocol !== "https:") {
location.protocol = "https:";
}
Firefox 49にはhttps
が機能しますがhttps:
は機能しない バグ があります。と言われています Firefox 54で修正されました 。
あなたは一時的ユーザーをhttpsにリダイレクトするだけでブラウザはこのリダイレクトを保存しないので、それはお勧めできません。
あなたはWebサーバー(Apache、nginxなど)のためのタスクを説明します http 301、http 302
これはどう?
if (window.location.protocol !== 'https:') {
window.location = 'https://' + window.location.hostname + window.location.pathname + window.location.hash;
}
理想的には、サーバー側でそれをするでしょう。
if (location.protocol == 'http:')
location.href = location.href.replace(/^http:/, 'https:')
これに答えるJavascriptの方法ではありませんが、CloudFlareを使用すれば、ユーザーをはるかに速くHTTPSにリダイレクトする page rules と書くことができ、無料です。 CloudFlareのページルールでこのようになります:
できるよ:
<script type="text/javascript">
if (window.location.protocol != "https:") {
window.location.protocol = "https";
}
</script>
機能的な方法
window.location.protocol === 'http:' && (location.href = location.href.replace(/^http:/, 'https:'));