1

Post Get Redirectメソッドを使用して、asp.netWebフォームを使用してフォームを送信しています。これは非常に簡単な設定です。

Step 1) Post form on Page1.aspx
Step 2) Process form and redirect using Response.Redirect to Page2.aspx
Step 3) Page2.aspx redirects using Response.Redirect to Page3.aspx

Page3.aspxを使用していて、戻るボタンを押すと、Page2.aspxに戻り、Page3.aspxにリダイレクトされるはずです。これにより、Page1.aspxに戻ってデータを再送信する可能性が低くなります。

代わりに、戻るボタンを押すと、Page1.aspxに直接戻ります。303リダイレクトも試しましたが、うまくいきませんでした。

ここで何が起こっているのでしょうか?

4

1 に答える 1

1

あなたが見ている行動は正しいことです。

さまざまなブラウザーは、一部のサイト (Google など) の動作をより適切にサポートするために、過去の履歴にすぐにリダイレクトするページを保持しません。

このことを考慮:

  1. google.com を検索します
  2. あなたはリンクをクリックします
  3. このリンクをクリックすると、実際のページにすぐに転送される前に、実際には google.com サーバーに戻ります。

  4. 正しいリンクではないと判断し、[戻る] ボタンをクリックします。

この時点で、ほとんどのブラウザーは、ステップ 2 で識別されたページに戻ります。これは、通常、何百万ものネチズンが望んでおり、期待している動作です。

ステップ 3 に戻ってステップ 4 に進むだけだと、一部の人は腹を立てます。動作にパッチが適用されるまで、特定のバージョンの IE が最近行ったように。

ポイントは、あなたが見ている動作は、Web の残りの部分がどのように機能するかということです。本当に必要な場合は、これを変更する他のメカニズムを検討する必要があります。

アップデート


@NinjaBomb: どういうわけか、フォローアップの質問を見逃したので、以下はおそらくあまり役​​に立ちません。

答えは、C# コードでリダイレクトを行う代わりに、ページの読み込みが完了したときにリダイレクトを行う JavaScript を Page2 に埋め込むことです。次に、ブラウザはページ 2 への参照を「保存」します。3 から戻るボタンをクリックすると、2 に戻り、3 にリダイレクトされます。

もちろん、ユーザーは単純に [戻る] ボタンを 2 回押すこともできます... 2 のリダイレクトを中断して 1 に移動させることもできます。すでに送信されている場合。その場合、ページ 1 はそれ自体を表示する代わりにリダイレクトを行う必要があります。

于 2012-05-21T22:18:58.817 に答える