表示方法にメッセージのユーザーした後、ポスト+HTTPリダイレクト
-
21-08-2019 - |
質問
私が使っているの PRGパターン を避ける複数の形で提出してください。では、しかし、深刻な欠点—はできませんで echo
の確認メッセージのユーザー当然のことながら、ユーザーさんのページを参照してください、ク別)してご利用いただけます。
その解決策のですが。私は知っておかなければなりませんし、もしそう。
- 使用カスタムリダイレクトURLのように:
http://example.com/?msg=data-saved
.この状態なので、いつでも信頼性は高い。その問題がユーザーのコピーをリンクをブックマークす。 - 店舗のセッション変数/クッキーにチェックすべてのページに負荷時のものです。の場合は、明確で、表示することができます。そうでOKではわかりませんこに依存してい強くクッキーをちょっと複雑化してきております。
かにもありそうないわからないですか?一部組み合わせのセッション、URLパラメータ?購.
何が最善の方法なのにだけお答えください。一方、欠点?その是非?
解決
ほとんどのユーザーがログインクッキーに依存することによってそれを行うことを可能にするすべてのウェブサイト。これは完璧なソリューションではありませんが、それは我々が得たベストです。
また、セッション処理は、Web開発フレームワークは、一般的にあなたのための世話をするものの一つである。
他のヒント
他にもいくつかのスタックオーバーフローする質問に触れがないと思いずれを整理し問題なのは確かです。ここにいくつかの例があります:
- どんな実施のポスト/Redirect/Getパターンasp.net ケ?
- に応じます。リダイレクトポストわかりいただけるでしょうか。
- 両 HTTP GETとのリクエストボディ や できるHTTP GET法を含ます。 アプローチの課題を議論して読むべきものでした。
- いを維持ModelState誤使用時のRedirectToAction?
多くの便利な解決策はセッションに基づくまたより深刻な欠点などの埋め込みメッセージをquerystring).
できない場合は保証しいセッション、他(かな)方法は、リダイレクトに異なる見方によって結果の形式で提出してください。例えば、リダイレクト EditWidgetView
, EditWidgetSaveSuccessfulView
, や EditWidgetSaveErrorView
(場合もあるでしょうなリダイレクトに誤りのない)一部の言語の枠組み、このことは非現実的であるにしておく必要がありま表示するこ確認-エラーメッセージがその他で使い勝手は大きく変わります。
あなたが取得し、変数/カスタムURLを使用すると、その変数が存在する場合、その後、参照してチェックすることができ、何らかの理由でセッションに依存したくない場合。参照して、適切であれば、メッセージを表示します。はい、これは確認メッセージを表示するために、送信されているいうへの依存度が追加されますが、そうでなければ、(信頼できる一方で、どちらかのすべてのソリューションのための100%完璧ではないである。)
セッションに頼っていますそして正直に、通常、この種のものについてかなり良いですいくつかの大規模なサイトでは、単にURLで「actiondone = true」を貼り付けます。 (私はFacebookがいくつかの場所でそれをしない気づいた。)
それはあなたが実行しているもののプラットフォームに依存します。
[:お知らせ] = "あなたのアクションが実行された"、ASP.NET MVCは、このTempDataを[ "予告"] = "あなたのアクションが実行された" ... 呼び出すRuby on Railsが、このフラッシュを呼び出します
基本的に、彼らはただ一つだけの往復のためのHttpSessionにデータを格納します。この方法は、あなたが別のWeb要求にデータを取得することができます。
この議論に非常に遅れて来る..
次の2つの提案のオプションの組み合わせを使用することができます。
この要求に対する応答メッセージが存在し得ることを示すURLにクライアントがリダイレクトされたPOSTリクエスト(303)の後:
Client: GET http://example.com/foo.cgi
Server: 200 Ok
Client: POST http://example.com/bar.cgi
Server: 303 http://example.com/foo.cgi?msg=true
メッセージをmsg
さtrue
引数は、セッション中に検索されますと、(見つかった場合)、クライアントへの応答に含まれています。
msg
引数が! true
(または存在しない)である場合には、ルックアップステップはスキップされます。
このソリューションを使用すると、URL内の実際のメッセージであるショーを防ぐため、URLは、メッセージがあるかもしれない示します。必要なときにも、メッセージのみが示されている(=セッション中に見つけたとき)。
もう一つの利点は、適切なキャッシュコントロールはHTTPレスポンスに含まれるため、この解決策でもできることです。
私は、セッション変数メソッドを使用します。私は本当に、特にあなたが注意URL省/共有の問題で、URLに表示するためのエラーメッセージを埋め込む好きではない、と私は、ユーザーが先のページを再読み込みした場合、それはきれいなインスタンスになるだろうことを好むます。