WEBアプリケーション研究室 開発ノート TOP

WEBアプリケーション研究室 開発ノート [HTTP]307でリダイレクトするとPOSTデータも飛んでくる

スポンサーサイト

-------- --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

    このエントリーをはてなブックマークに追加

表題のとおりですが、よく、データの保存画面で、サブミット時に自分自身にPOSTして


if(isset($_POST['submit']))
{
//保存する動作
}
こんな感じで、保存するかどうかの処理をしています。で、保存後、同じページにとどまりたい時
再読込で、「フォームデータを再送信しますか?」というアラートを出さいないために。また、自分自身にリダイレクトします。

if(isset($_POST['submit']))
{
//保存する動作
$this->_redirect();
}
こんな処理をよくやるのですが、この時、ステータスコードを307(Moved Temporarily)にすると、リダイレクト先にそのままデータも一緒にPOSTされます。つまり、この処理はリダイレクトの無限ループを起こします。

以前、どこかで、Moved Temporarilyは302という情報をみて、それで、リダイレクトしてたのですが、1.1から307に変更されてるというのを知り、変更してみたところ発見しました。ちなみに、301(Moved Permanently)、303(See Other)ではGETになります。たしかに、意味合い的にも307は最初のリクエストと同じ状態というのはなんとなくうなずけます。

よく考えたら、このシチュエーションでは303の方がふさわしいと思ったので、今回は303に変えて対処しました。
スポンサーサイト

    このエントリーをはてなブックマークに追加
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。