Chrome ブラウザで 301 リダイレクトを cache させない方法

Tadashi Shigeoka ·  Tue, September 24, 2019

Chrome ブラウザで 301 リダイレクトを cache させない方法をご紹介します。

Google Chrome

301 リダイレクト cache 問題の経緯

問題の経緯としては、Web サービスの短縮 URL 機能において、以下の手順で問題が発生しました。

  1. 短縮 URL を作成する
  2. 短縮 URL を Chrome ブラウザで開く
  3. 短縮 URL の redirect 先 URL を変更する
  4. 短縮 URL を Chrome ブラウザで開くが、変更前の URL に redirect されてしまう

Chrome Developer Tools 手元の環境だけで解決する方法

上記の記事のとおりに、ブラウザキャッシュを削除しましょう。

短縮 URL サービス側で解決する方法

301 じゃなくて 302, 307 を使う

要件を満たせるなら 301 ではなく、302, 307 を使うことで browser cache を回避することができます。

HTTP ヘッダー no-cache でも 301 は cache される

例えば、HTTP ヘッダーを

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache

のように指定しても Chrome は Browser Cache する使用になっています。理由は、以下の引用文のとおりです。

Note that HTTP 301 is Moved Permanently so caching the response is perfectly allowed. If you don't want the response to be cached, try 302 or 307. en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection - Wikipedia

Ref: web development - How can I make Chrome stop caching redirects? - Super User

301 Moved Permanently は恒久的にリダイレクトする HTTP レスポンスステータスコードなので、そもそも redirect 先が変わることがあるケースに適していません。そのような場合は、一時的に変更されたことを示す 302 Found か 307 Temporary Redirect を使うべきというわけです。

以上、Chrome ブラウザで 301 リダイレクト cache 問題を解決したい、現場からお送りしました。

参考情報