ALBの301リダイレクトがChromeにキャッシュされてハマった話
Webサーバーのフロントに、AWSのApplication Load Balancerがとても便利です。
ACMでSSL証明書を作成してSSL終端にすれば、Webサーバー側でSSL化について考える必要がなくなります。
HTTP → HTTPSのリダイレクトもALBがやってくれます。
そんな便利なALBですが、設定ミスとChromeブラウザの仕様があいまってハマったので、その備忘録です。
やりたかったこと
HTTP → HTTPSのリダイレクトです。
ALBのHTTP:80リスナーに、HTTPS:443へリダイレクトする設定を入れる。よくある設定です。
間違えたこと
リダイレクトのポートを間違えました。
起こったこと
ChromeブラウザでHTTPアクセスしようとすると、設定どおり間違えたポートにリダイレクトされます。
すぐにおかしいことに気がついてALBのリスナーのポートを443に修正します。
リスナー修正後に反映されていることを確認しようとしますが、なぜか間違えたポートにリダイレクトされます。
試しにブラウザをFirefoxに変えて、HTTPアクセスしてみます。修正した通りにリダイレクトされます。
いったい何が起きているんだ???
Chromeは301リダイレクトをキャッシュする
Chromeブラウザは301リダイレクトをキャッシュするようです。
いろいろググってみると、同じようにハマっている方がいっぱい居ました。みなさま情報ありがとうございます?
Chrome で 301 リダイレクトが解除できないときの対処方法 | gotohayato
Chromeでウェブ開発:301転送キャッシュの対応。 | WWWクリエイターズ
Chromeで意図しないリダイレクトが起きた場合の対処 - Qiita
リダイレクトキャッシュを無視する方法
Chromeブラウザの開発者ツールを使うと301リダイレクトキャッシュを無視できます。
開発者ツールを開いて、ネットワークタブを選択して、 Disable cache
にチェックを入れてからリダイレクト元のURLにアクセスすると、キャッシュを無視してALBで設定したとおりにリダイレクトしてくれました。