みかづきブログ その3

3ヶ月つづけてみました。

JavaScriptでhttpにきたアクセスをhttpsにリダイレクトする

当然サーバサイドで対応するのが良いのですが、フロントエンドのしごとをしていると、「サーバ側の改修が不可能のでフロントでなんとかしてください」ということが稀にあります。

もしも、そんな状況で、httpできたアクセスをhttpsにリダイレクトしたかったら、

愚直に掛けば、

location.replace(location.href.replace(/^http:/, "https:"));

こんな感じでしょう。

https以外をすべてhttpsにリダイレクトするなら、

if (location.protocol !== "https:") {
  location.replace("https:" + location.href.substring(location.protocol.length));
}

という感じになりますが、
本当に極稀に簡単な修正をhtmlファイルを開いて確認することがあるので、
基本的には愚直に書いたバージョンを使ってます。
(後者だとfile:///もhttpsにリダイレクトされてしまうため)

注意事項としては、

  • なるべくheadタグの上の方に書く
  • PVが倍になるリスクあり
  • httpsからhttpにリダイレクトされる環境だと無限ループが起こる

の3点です。