質問

このようなHTTPレスポンスを作成することは可能ですか?ブラウザはそれを無視し、以前に表示されたページを表示し続けますか?

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

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

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

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

d)サーバーは特別に細工された応答を送信します

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

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

役に立ちましたか?

解決

HTTP 204 No Contentを返します。このレスポンスコードの説明は、 RFC 2616(ハイパーテキスト転送プロトコル- -HTTP / 1.1)場所:

  

クライアントがユーザーエージェントの場合、ドキュメントビューを変更しないでください。   これによりリクエストが送信されました。この応答は主に許可することを目的としています   ユーザーエージェントのアクティブを変更せずに実行するアクションの入力   ドキュメントビュー。ただし、新規または更新されたメタ情報は、   現在、ユーザーエージェントのアクティブビューにあるドキュメント。

他のヒント

これは通常 AJAX と呼ばれるメソッドです。 Javascript XMLHttpRequest 関数。

編集:下部の「PS」に注目してください。別の回答で提案された 204応答は、有効である可能性があります非Javascriptソリューション。

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

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

数回。

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

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

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top