HTTP
HyperText Transfer Protocol
World Wide Webにおいて、WebブラウザとWebサーバとの間での転送に用いられるプロトコルで、ブラウザからサーバへ送られる Get、Put コマンドに対し、サーバーが結果を返す際の規約を定めたものです。ティム・バーナーズ・リー氏が1990年に開発。ブラウザのアドレスバーに表記されるhttp:// ・・がそれです。HTMLの送信のみならず、静止画、動画、音声、PDFなど様々なデータの転送にも使われています。
- RFC2616:Hypertext Transfer Protocol HTTP/1.1
http://tools.ietf.org/html/rfc2616 - RFC 7540:Hypertext Transfer Protocol Version 2 -- HTTP/2
https://tools.ietf.org/html/rfc7540
HTTPリクエスト
HTTPリクエストは大きく以下の3つに分けられます。
- リクエスト行
- メッセージヘッダー
- メッセージボディ
リクエスト行
リクエスト行には、Webサーバに依頼する処理内容が書かれます。
最も一般的なのは、ページデータ(HTML)の送信要求です。
GET /index.html HTTP/1.1
リクエストメソッド
- GET:データの送信要求
- HEAD:メッセージヘッダの内容を問い合わせ
- POST:サーバにデータを送信
- PUT:ファイルのアップロード
- DELETE:データ削除の要求
- CONNECT:トンネル確立を要求
- OPTIONS:サポートするオプションの問い合わせ
- TRACE:経由するサーバに応答要求
リクエストヘッダー
リクエストに関わる各種の情報が書かれています。
Host: www.example.com Connection: keep-alive User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) ・・・ Accept: */* :
リクエストボディー
略:GETメソッドでは、ボディーは存在しません。
HTTPレスポンス
HTTPレスポンスは大きく以下の3つに分けられます。
- ステータス行
- メッセージヘッダー
- メッセージボディ
ステータス行
ステータス行にはWebサーバの処理結果(ステータスコード)がセットされます。ステータスコードは3桁の数字で、以下のように回答されます。
HTTP/1.1 200 OK
ステータスコード
- 100:データに続きがあるため再要求
- 101:指定プロトコルで再接続を要求
- 200:リクエスト処理成功
- 201:ファイル作成成功
- 301:データが別の場所に移動
- 302:一時的にデータは別の場所に移動
- 403:データへのアクセス不可
- 404:データが見つからない
- 500:サーバ内部のエラー
- 503:一時的にサーバ処理不可