Http-requests
HTTP-リクエスト
HTTPクライアントは、次の形式を含む要求メッセージの形式でサーバーにHTTP要求を送信します。
- リクエストライン
- CRLFが後に続く0個以上のヘッダー(一般|リクエスト|エンティティ)フィールド
- 空の行(CRLFの前に何もない行) ヘッダーフィールドの終わりを示す
- オプションでメッセージ本文
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
Request-Lineに記載されている各部分について説明しましょう。
リクエスト方法
リクエスト method は、指定された Request-URI で識別されるリソースで実行されるメソッドを示します。 メソッドは大文字と小文字を区別し、常に大文字で表記する必要があります。 次の表に、HTTP/1.1でサポートされているすべてのメソッドを示します。
S.N. | Method and Description |
---|---|
1 |
GET GETメソッドは、特定のURIを使用して特定のサーバーから情報を取得するために使用されます。 GETを使用するリクエストは、データを取得するだけで、データに他の影響を与えません。 |
2 |
HEAD GETと同じですが、ステータス行とヘッダーセクションのみを転送します。 |
3 |
POST POSTリクエストは、顧客情報、ファイルのアップロードなどのデータをサーバーに送信するために使用されます。 HTMLフォームを使用します。 |
4 |
PUT ターゲットリソースの現在のすべての表現を、アップロードされたコンテンツで置き換えます。 |
5 |
DELETE URIで指定されたターゲットリソースの現在の表現をすべて削除します。 |
6 |
CONNECT 特定のURIで識別されるサーバーへのトンネルを確立します。 |
7 |
OPTIONS ターゲットリソースの通信オプションを説明します。 |
8 |
TRACE ターゲットリソースへのパスとともにメッセージループバックテストを実行します。 |
リクエストURI
Request-URIはUniform Resource Identifierであり、リクエストを適用するリソースを識別します。 URIを指定するために最も一般的に使用されるフォームは次のとおりです。
Request-URI = "*" | absoluteURI | abs_path | authority
S.N. | Method and Description |
---|---|
1 |
The asterisk * is used when an HTTP request does not apply to a particular resource, but to the server itself, and is only allowed when the method used does not necessarily apply to a resource. For example: オプション *HTTP/1.1 |
2 |
The absoluteURI is used when an HTTP request is being made to a proxy. The proxy is requested to forward the request or service from a valid cache, and return the response. For example:
|
3 |
The most common form of Request-URI is that used to identify a resource on an origin server or gateway. For example, a client wishing to retrieve a resource directly from the origin server would create a TCP connection to port 80 of the host "www.w3.org" and send the following lines:
絶対パスを空にすることはできません。元のURIに何も存在しない場合、「/」(サーバールート)として指定する必要があります。 |
リクエストヘッダーフィールド
HTTPヘッダーフィールドを学習するときは、別の章でGeneral-headerとEntity-headerを学習します。 とりあえず、Requestヘッダーフィールドを確認しましょう。
リクエストヘッダーフィールドを使用すると、クライアントはリクエストに関する追加情報とクライアント自体に関する情報をサーバーに渡すことができます。 これらのフィールドはリクエスト修飾子として機能します。要件に基づいて使用できる重要なリクエストヘッダーフィールドのリストを次に示します。
- 受け入れ文字セット
- 受け入れエンコード
- 受け入れ言語
- 承認
- 期待する
- From
- Host
- 一致する場合
- If-Modified-Since
- If-None-Match
- If範囲
- 未修正の場合
- マックスフォワード
- プロキシ承認
- 範囲
- リファラー
- TE
- ユーザーエージェント
独自のカスタムクライアントおよびWebサーバーを作成する場合に備えて、カスタムフィールドを導入できます。
リクエストメッセージの例
それをまとめて、finddevguides.comで実行されているWebサーバーから hello ページをフェッチするHTTPリクエストを作成しましょう
GET/hello HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.finddevguides.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
ここでは、サーバーからプレーンHTMLページを取得しているため、サーバーに要求データを送信していません。 接続は汎用ヘッダーであり、残りのヘッダーは要求ヘッダーです。 次の例は、要求メッセージ本文を使用してフォームデータをサーバーに送信する方法を示しています。
POST/cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.finddevguides.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
licenseID=string&content=string&/paramsXML=string
ここでは、渡されたデータを処理するために指定されたURL _/cgi-bin/process.cgi_が使用され、それに応じて応答が返されます。 ここで、 content-type は、渡されたデータが単純なWebフォームデータであり、 length がメッセージ本文に入れられたデータの実際の長さであることをサーバーに伝えます。 次の例は、プレーンXMLをWebサーバーに渡す方法を示しています。
POST/cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.finddevguides.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://clearforest.com/">string</string>