HTTP メッセージ
大きく 3 つの要素で構成されている
スタートラインは、メッセージがリクエストかレスポンスかによって更に 2 種類に分かれる
以下の 3 つの情報を含む
2. どのリソースにアクセスするか
3. HTTP のどのバージョンを使うか
request-line = method SP request-target SP HTTP-version CRLF
e.g. http://example.com/index.html にアクセスする場合
GET /index.html HTTP/1.1
以下の 3 つの情報を含む
1. HTTP のどのバージョンを使うか
e.g. OK や Not Found など
RFC 7230 で以下のように記載されているように、クライアントは理由フェーズによって挙動を変えてはいけない
A client SHOULD ignore the reason-phrase content.
status-line = HTTP-version SP status-code SP reason-phrase CRLF
e.g. http://example.com/index.html へのアクセスが成功した場合
HTTP/1.1 200 OK
スタートラインの 2 行目以降、改行だけの行までの部分
1 つのヘッダは : で区切られた Key-Value のペアで構成される
header-field = field-name ":" OWS field-value OWS
任意の項目だが、HTTP/1.1 からは Host ヘッダをリクエストに含める必要がある これは、1 つの IP アドレス と ポート番号 で複数の Web サイトを運用している場合、Host ヘッダの値によってアクセスしたい Web サイトを判断するためである HTTP リクエストにおける Host
HTTP レスポンスにおける Date
e.g. http://example.com/index.html にアクセスする場合
code:_
GET /index.html HTTP/1.1
Host: example.com
HTTP ヘッダ後の改行以降
リクエスト
GET リクエストの場合、RFC で定められていないため空であることが多い
一方、POST や PUT リクエストでは更新内容が含まれる
レスポンス
GET レスポンスの場合、以下のような HTML などのリソース内容が含まれる
code:_
HTTP/1.1 200 OK
...
<!DOCTYPE html>
<html>
...
</html>