4

ブラウザがそれを無視して、以前に表示されたページを表示し続けるような HTTP 応答を行うことは可能ですか?

私は次のシナリオを意味します:

a) ユーザーが何かをクリックする

b) 一部の POST がサーバーに送られます (または GET ですが、より興味深いものとして POST に固執しましょう)。

c) サーバーは、何らかの理由で現時点で応答を送信したくないと判断します

d) サーバーが特別に細工された応答を送信する

e) ブラウザにエラーページが表示されない、空のページが表示されない、どこにもリダイレクトされない、リロードされない - ユーザーがフォームを送信しなかったかのように、表示されていたものを表示し続ける

PS もちろん AJAX でラップすることもできますが、最低限の非 JavaScript ソリューションが可能かどうかを尋ねます

4

5 に答える 5

12

HTTP 204 No Content を返してみてください。RFC 2616 (Hypertext Transfer Protocol -- HTTP/1.1 )のこの応答コードの説明を参照してください。

クライアントがユーザー エージェントである場合、リクエストが送信された原因となったドキュメント ビューを変更すべきではありません (SHOULD NOT)。この応答は主に、ユーザー エージェントのアクティブなドキュメント ビューを変更せずにアクションの入力を許可することを目的としていますが、現在ユーザー エージェントのアクティブなビューにあるドキュメントには、新しいメタ情報または更新されたメタ情報を適用する必要があります。

于 2009-03-17T15:08:28.977 に答える
1

これは通常AJAXと呼ばれるメソッドです。JavascriptXMLHttpRequest関数が必要です。

編集:あなたの「PS」が一番下にあることに気づきました。別の回答で提案されている204 応答は、有効な非 Javascript ソリューションのようです。

于 2009-03-17T15:08:10.240 に答える
1

あなたがそうするとします。

ユーザーは何をしますか?もちろん、もう一度フォームを送信してください。

数回。

その後、彼らはあなたのサイトが壊れていると判断し、去ります。

于 2009-03-17T15:09:56.960 に答える
0

そのためにはJavascriptが必要だと思います.リクエストを送信し、サーバーの応答に応じてJavascriptがfalseを返し、実際のページの更新/再読み込みを回避できます.

204 応答についてはわかりませんが、おそらくその方法でサーバー側から実行できます。

それを行う別の方法 (Javascript も) は、リクエストが送信された直後に return false を作成し、サーバーの応答 (ajax を使用) に応じて、実際のページを変更したり、ユーザーを別のページに送信したりできます。

于 2009-03-17T15:28:49.660 に答える
-2

いいえ。HTTP プロトコルは、要求と応答のサイクルで構成されています。サーバーは応答しないことを決定できません (応答できますが、プロトコルを破ってエラーをコミットしています)。

于 2009-03-17T15:10:11.750 に答える