とてもシンプルです。Web クライアント (Web ブラウザー) が Web サーバーに要求を送信した後、Web クライアントは Web サーバーからの応答を期待して受信します。その後(送信後)、WebクライアントはWebサーバーにデータを送信します(ポストバック)。しかし、内部的には、Web サーバーがポストバックとは何か、または Web ページの最初の要求とは何か (おそらく HTTP 要求のフラグでしょうか?) をどのように認識していますか?
3 に答える
HTTP には、 や などの多くの動詞がPOST
ありGET
ます。GET
URLを入力するようなものです。POST
通常、フォームに使用されます。
ページ メソッドが の場合POST
、これを設定する必要があります (ASP.NET で)。
if (Page.IsPostBack)
{
}
IIS/サーバーについてのみ話している場合は、(それ自体では) できません。最初のリクエストは、任意の動詞 ( GET
、POST
、または許可するその他の動詞) にすることができます。
ASP.NET Web フォーム ページについて話している場合、"最初の" 要求は であり、"ポストバック" であると想定できGET
ます (100% ではありません)。用語自体の性質上、POST
. ただし、上記と同様に、最初の要求POST
としてを受け取る ASP.Net ページを作成できます。
開発者として、「最初の要求」を識別する方法を作成できますが、それをどのように定義してもかまいません。それはおそらく流れを強制するあなたの方法です。この動詞は、「最初の (http) リクエスト」を識別することとはまったく関係ありません....
System.Web.UI.Page
ストーリー全体の一部にすぎませんが、これはおそらくクラスの最も関連性の高い抜粋です。
メソッド内ProcessRequestMain(bool includeStagesBeforeAsyncPoint, bool includeStagesAfterAsyncPoint)
:
if (this._requestValueCollection != null) {
[..]
text2 = this._requestValueCollection["__CALLBACKID"];
if (text2 != null && this._request.HttpVerb == HttpVerb.POST)
{
this._isCallback = true;
}
[..]
}
明らかに、ASP.NET は暗号化さ__CALLBACKID
れた投稿パラメーターを送信し、HTTP 要求メッセージで POST 動詞が設定されているかどうかも確認します。