■ はじめに
HTTPプロトコルについて、ちょこちょこまとめる。
目次
【1】HTTP (Hypertext Transfer Protocol) 【2】HTTPメッセージ 1)リクエスト・メッセージ 2)レスポンス・メッセージ 【3】HTTPステータス・コード 1)1xx : Informational (情報) 2)2xx : Success (成功) 3)3xx : Redirection (転送) 4)4xx : Client Error (クライアントエラー) 5)5xx : Server Error (サーバエラー) 【4】HTTP ヘッダー 1)If-Modified-Since
【1】HTTP (Hypertext Transfer Protocol)
* Web のサーバと、クライアント(ブラウザ)の間で、 ウェブページを送受信するためのプロトコル * HTTPは、ステートレスなプロトコルである
ステートレスプロトコルとは?
* 一つひとつの通信において、状態を保持できない通信プロトコル => ステートレスな通信では、1回のリクエストレスポンスごとに TCP/IPコネクションが生成される => そのため、連続したリクエストを送る場合でも 毎回接続と切断が繰り返され、パフォーマンスが低下する * HTTP/1.1では、TCP/IPレベルでのコネクションを一度きりで切断せずに、 一定時間コネクションを維持するための持続的接続(Persistent Connection)が追加 持続的接続に関連する事項として、「Keep-Alive」がある
【2】HTTPメッセージ
1)リクエスト・メッセージ
構文
[リクエスト行] [ヘッダ] (空行) [メッセージボディ(POSTメソッドなどで使用)]
例
GET /yahoo.co.jp/index.html HTTP/1.1 Host: localhost User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; ja-JP; rv:0.9.2) \ Gecko/20010726 Netscape6/6.1 Accept: text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, \ image/png, image/jpeg, image/gif;q=0.2, text/plain;q=0.8, text/css, \ */*;q=0.1 Accept-Language: ja Accept-Encoding: gzip,deflate,compress,identity Accept-Charset: Shift_JIS, utf-8;q=0.66, *;q=0.66 Keep-Alive: 300 Connection: keep-alive
2)レスポンス・メッセージ
構文
[レスポンス行] [ヘッダ] (空行) [メッセージボディ]
例
HTTP/1.1 200 OK ETag: W/"7487-1032772982000" Last-Modified: Mon, 23 Sep 2002 09:23:02 GMT Content-Type: text/html Content-Length: 7487 Date: Tue, 29 Apr 2003 07:26:13 GMT Server: Apache Coyote/1.0 <html> <body> (中略) </body> </html>
【3】HTTPステータス・コード
http://e-words.jp/p/r-httpstatus.html
より
1)1xx : Informational (情報)
100 : Continue(継続)
* 処理継続中。不足分ヘッダーを追加送信せよ。
101 : Switching Protocols(プロトコル切替)
* プロトコルを変更し再接続せよ。
2)2xx : Success (成功)
200 : OK(成功)
* 成功(正常時)
201 : Created(作成完了)
3)3xx : Redirection (転送)
301 : Moved Permanently(恒久的に移転)
* Locationヘッダーに指定された別の場所に移動済
307 : Temporary Redirect
* 指定されたコンテンツは一時的に移動中
4)4xx : Client Error (クライアントエラー)
400 : Bad Request(不正なリクエスト)
* 要求が不正
401 : Unauthorized(未認証)
* 認証されていない
402 : Payment Required
* 支払いが必要
403 : Forbidden(アクセス権がない)
* アクセスが認められていない
404 : Not Found(存在しない)
* 指定されたコンテンツが見つからない
408 : Request Timeout
* クライアント側が時間はかかるため、 リクエスト・タイムアウトした。
415 : Unsupported Media Type
* メディアタイプが適合しない
5)5xx : Server Error (サーバエラー)
500 : Internal Server Error(サーバ内部のエラー)
* サーバ内部でエラーが発生した
501 : Not Implemented(その機能は実装されていない)
503 : Service Unavailable
* サービスは利用不可能
505 : HTTP Version Not Supported
* 指定されたHTTPバージョンはサポートされていない
【4】HTTP ヘッダー
1)If-Modified-Since
* 更新有無を調べる場合に使う + 更新あり場合:更新したコンテンツをクライアントに返却 + 更新なし場合:304 Not modified として、キャッシュを使用