web-dev-qa-db-ja.com

HTTPまたはHTTPSを検出してからJavaScriptを強制的にHTTPSにする

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();
}
254
Registered User

これを試して

if (location.protocol != 'https:')
{
 location.href = 'https:' + window.location.href.substring(window.location.protocol.length);
}
425
Soumya

location.protocolを設定すると新しいURLに移動します 。何も解析/スライスする必要はありません。

if (location.protocol !== "https:") {
  location.protocol = "https:";
}

Firefox 49にはhttpsが機能しますがhttps:は機能しない バグ があります。と言われています Firefox 54で修正されました

45
sam

あなたは一時的ユーザーをhttpsにリダイレクトするだけでブラウザはこのリダイレクトを保存しないので、それはお勧めできません。

あなたはWebサーバー(Apache、nginxなど)のためのタスクを説明します http 301、http 302

18
b1_

これはどう?

if (window.location.protocol !== 'https:') {
    window.location = 'https://' + window.location.hostname + window.location.pathname + window.location.hash;
}

理想的には、サーバー側でそれをするでしょう。

13
keirog
if (location.protocol == 'http:')
  location.href = location.href.replace(/^http:/, 'https:')
11
Steven Penny

これに答えるJavascriptの方法ではありませんが、CloudFlareを使用すれば、ユーザーをはるかに速くHTTPSにリダイレクトする page rules と書くことができ、無料です。 CloudFlareのページルールでこのようになります:

enter image description here

4
Mikeumus

できるよ:

  <script type="text/javascript">        
        if (window.location.protocol != "https:") {
           window.location.protocol = "https";
        }
    </script>
0
M.BRAHAM

機能的な方法

window.location.protocol === 'http:' && (location.href = location.href.replace(/^http:/, 'https:'));