0

post メソッド内からリクエストを転送すると、確認アラートが表示され、「情報を再送信しないとページを更新できません」というメッセージが表示されます。ただし、get メソッドから転送が行われた場合、このアラート ボックスは表示されません。

理由は何ですか ?助けてください。

4

2 に答える 2

0

GET リクエストの URL にこれらのパラメータが含まれているためです (たとえば、URL は で終わります
?param1=foo&param2=bar)。通常、GET 要求には、サーバーの状態を変更する機密データやアクションは含まれません。URL から、何を送信しているかがわかります。

POST の場合、パラメーターは「非表示」になり、HTTP 要求の一部としてバックグラウンドで送信され、URL を見ても確認できません。これらのパラメーターはサーバーの状態を変更し、同じデータが 2 回送信された場合に問題が発生する可能性があります (たとえば、Web ストアから何かを誤って 2 回購入した場合など)。ブラウザは、再送信することに気付いていない場合に備えて通知します。

于 2013-04-23T20:23:03.450 に答える
0

HTTP 仕様では、POST は非べき等の要求を対象としているため、サーバーの状態を変更するため (たとえば、新しい製品をカテゴリに追加することによって)、要求が再送信された場合に再度変更されます。 (たとえば、そのカテゴリに新しい製品が作成されます)。

一方、GET はべき等な要求を対象としています。たとえば、Google 検索はべき等です。同じものを 2 回検索しても、サーバー上で何も変更されず、同じ要求を再送信しても不要な影響はありません。

ブラウザーは、Web アプリケーションがこの規則を尊重することを期待しているため、POST 要求を再送信する前に、この望ましくない副作用についてユーザーに警告します。

通常のプラクティスは、post-redirect-getパターンに従って、この迷惑なポップアップや望ましくない副作用なしに、投稿後にユーザーが更新できるようにすることです。

于 2013-04-23T20:21:11.580 に答える