26

HttpRequestクラスは、次の 2 つのプロパティを定義します。

Http メソッド:

クライアントが使用する HTTP データ転送メソッド (GET、POST、HEAD など) を取得します。

public string HttpMethod { get; }  

クライアントが使用する HTTP データ転送方法。

およびRequestType :

クライアントが使用する HTTP データ転送メソッド (GET または POST) を取得または設定します。

public string RequestType { get; set; }

クライアントから送信された HTTP 呼び出しの種類を表す文字列。

これら2つのプロパティの違いは何ですか? どちらか一方を使用したいのはいつですか?クライアントが使用したデータ転送方法を確認するために検査するのに適切なものはどれですか?

ドキュメントは、HttpMethodが使用された動詞を返すことを示しています。

GET、POST、HEAD など

RequestTypeのドキュメントは、次の 2 つの可能な値のうちの 1 つだけを示しているようです。

GET または POST


動詞のランダム サンプリングでテストしたところ、両方のプロパティがすべての動詞をサポートしているようで、どちらも同じ値を返します。

テスト:

Client Used    HttpMethod    RequestType
GET            GET           GET
POST           POST          POST
HEAD           HEAD          HEAD
CONNECT        CONNECT       CONNECT
MKCOL          MKCOL         MKCOL
PUT            PUT           PUT
FOOTEST        FOOTEST       FOOTEST

違いは何ですか:

  • HttpRequest.Http メソッド
  • HttpRequest.RequestType

また、いつどちらを使用する必要がありますか?

4

2 に答える 2

27

Reflectorは、内部的にRequestType呼び出していることを示しています。HttpMethodだから、あなたは電話した方が少しだけHttpMethodましです。RequestType実際、存在する本当の理由は従来の ASP との下位互換性のためだと思います。

于 2010-01-28T20:44:48.937 に答える
-4

以下の記事を確認できます:-

リクエスト メソッド: telnet を使用して行われる HTTP リクエスト。要求、応答ヘッダー、および応答本文が強調表示されます。

HTTP は、識別されたリソースに対して実行する目的のアクションを示す 8 つのメソッド (「動詞」と呼ばれることもあります) を定義します。このリソースが何を表すかは、既存のデータか動的に生成されたデータかに関係なく、サーバーの実装によって異なります。多くの場合、リソースは、サーバー上に存在するファイルまたは実行可能ファイルの出力に対応します。

HEAD GET 要求に対応するものと同じ応答を要求しますが、応答本文はありません。これは、コンテンツ全体を転送することなく、応答ヘッダーに書き込まれたメタ情報を取得するのに役立ちます。

GET 指定されたリソースの表現を要求します。GET は、Web アプリケーションでアクションを実行するために使用するなど、副作用を引き起こす操作には使用しないでください。この理由の 1 つは、GET がロボットまたはクローラーによって任意に使用される可能性があるためです。ロボットまたはクローラーは、要求が引き起こす副作用を考慮する必要はありません。以下の安全な方法を参照してください。

POST 処理するデータ (HTML フォームなどから) を識別されたリソースに送信します。データはリクエストの本文に含まれます。これにより、新しいリソースが作成されるか、既存のリソースが更新されるか、またはその両方が発生する可能性があります。PUT 指定されたリソースの表現をアップロードします。DELETE 指定したリソースを削除します。TRACE 受信した要求をエコー バックして、クライアントが要求で追加または変更されている中間サーバーを確認できるようにします。OPTIONS 指定された URL に対してサーバーがサポートする HTTP メソッドを返します。これは、特定のリソースの代わりに「*」を要求することで、Web サーバーの機能をチェックするために使用できます。CONNECT 要求接続を透過的な TCP/IP トンネルに変換します。通常は、暗号化されていない HTTP プロキシを介した SSL 暗号化通信 (HTTPS) を容易にします。

HTTP サーバーは、少なくとも GET メソッドと HEAD メソッド [7] を実装する必要があり、可能な限り OPTIONS メソッドも実装する必要があります。[要出典] 安全なメソッド

一部のメソッド (HEAD、GET、OPTIONS、TRACE など) は安全であると定義されています。つまり、これらのメソッドは情報の取得のみを目的としており、サーバーの状態を変更するべきではありません。つまり、ロギング、キャッシング、バナー広告の配信、Web カウンターの増加などの比較的無害な効果以外に、副作用があってはなりません。したがって、アプリケーションの状態のコンテキストに関係なく、任意の GET 要求を行うことは安全であると見なす必要があります。

対照的に、POST、PUT、DELETE などのメソッドは、サーバーに副作用を引き起こす可能性があるアクション、または金融取引や電子メールの送信などの外部の副作用を引き起こす可能性があるアクションを対象としています。したがって、このような方法は通常、コンテキストや結果に関係なく要求を行う傾向がある適合 Web ロボットまたは Web クローラーでは使用されません。

GET リクエストの所定の安全性にもかかわらず、実際には、サーバーによるそれらの処理は技術的に制限されておらず、不注意または意図的なプログラミングは、簡単に (ユーザー エージェントの予防策がないため、より簡単に) 重要な変更を引き起こす可能性があります。サーバー上。Web キャッシング、検索エンジン、およびその他の自動化されたエージェントに問題が発生し、サーバーに意図しない変更が加えられる可能性があるため、これはお勧めできません。

于 2010-04-08T06:36:59.800 に答える