それでも Location ヘッダを使いたい消極的な理由(2)

前回の続きです。
ちょっと話は飛びますが,右の画像のような「有効期限切れ」画面に遭遇したことはありませんか?
これは,(ヘッダ等によって)キャッシュを無効にされており,かつ,フォームのPOST によって飛んだページ「に対して」ブラウザの Forward, Back ボタンで移動した場合などに見受けられる画面です(画面は IE 6 の場合; Firefox 等では,ダイアログが出る)。
よく読めば意味はなんとかわかるはずですが,パソコンに不慣れな層がこのような画面を見た場合,パニックに陥るか,とくに内容を咀嚼せずに更新ボタンを反射的に押すか,の反応を示すことでしょう。
さて,話は Location ヘッダによるリダイレクションに戻ります。Location ヘッダによってリダイレクトさせると,ブラウザはリダイレクト先の内容を GET メソッドで取得します。ということは,先述の「有効期限切れ」画面を回避することが出来るのです(以下,キャッシュ無効にしている前提での話となります)。

 a.html →(POST)→ b.php →(Location)→ c.php

上のような状態遷移を伴っている場合,c.php まで到達したあとで,a.html にブラウザ Back で戻り,ブラウザ Forward すると,b.php を経由せずに,c.php を取得します(とりあえず,IE 6 と,Gecko はそのような挙動でした)。また,c.php は GET で取得されるので,「有効期限切れ」画面は表示されません。ただし,c.php は GET で取得されるため,それなりのセッション管理が必要になってきたりします。

以上のように微妙テクの使える Location ヘッダなのですが,

ことに注意が必要です。