Webを支える技術　付録B −− HTTPヘッダ

# サーバ情報
### Date
| HTTPヘッダ | 利用するメッセージ| 値 | 関連ステータスコード | 説明 |
|:-:|:-:|:-:|:-:|:-|
| Date  |  リクエスト、レスポンス |  日時 | -  | メッセージを生成した日時を示す。  |
|  Retry-After |  レスポンス |  日時または数値(秒) | 202 Accepted、503 Service Unavailabe  |  クライアントに再度アクセスしてほしい時間を示す。 |
|  Server | レスポンス  |  サーバソフトウェアの名称とバージョン | -  | サーバソフトウェアの情報を示す  |
|  Set-Cookie |  レスポンス | 文字列  | -  |  セッション情報などをサーバ側からクライアントに設定するときに利用 |

# クライアント情報
| HTTPヘッダ | 利用するメッセージ| 値 | 関連ステータスコード | 説明 |
|:-:|:-:|:-:|:-:|:-|
| Cookie  | リクエスト  |  文字列 |  - |  Set-Cookieヘッダで指定されたCookie情報を示す。 |
| Expect  |  リクエスト |  100-continue | 100 Continue ,407 Expection Failed  |  クライアントが期待するサーバの振る舞いを示す。 |
|  From |  リクエスト |  メールアドレス |  - | クライアントを操作している人のメールアドレスを示す。セキュリティ上の理由から現在では使われていない。  |
| Referer  |  リクエスト |  URI | -  | ブラウザでリンクをクリックしたときに、クリック元のURIを示す  |
| User-Agent  |  リクエスト |  クライアントソフトウェアの名称とバージョン |  - | クライアントのソフトウェア情報を示す。  |

# リソース情報
| HTTPヘッダ | 利用するメッセージ| 値 |  説明 |
|:-:|:-:|:-:|:-|
|  Content-Encoding | リクエスト、レスポンス  |  圧縮方式 | ボディの圧縮方式を示す。  |
|  Content-Language |  リクエスト、レスポンス |  言語タグ |  ボディに記述している自然言語を示す。 |
|  Content-Length | リクエスト、レスポンス  |  10進数の値（バイト） | ボディのサイズをバイトで示す。  |
|  Content-MD5 |   リクエスト、レスポンス|  MD5ハッシュ値 |  ボディのMD5ハッシュ値を示す。転送中にボディが破損していないかのエラー検出に利用できる。 |
|  Content-Type |  リクエスト、レスポンス| メディアタイプ  |  ボディのメディアタイプを示す。 |
|  Content-Location | レスポンス |  URI |  リクエストで指定したURI以外からもリソースを取得できるときに、そのURIを示す |
| Last-Modified  | レスポンス  | 日時  |  リソースの最終更新日時を示す。 |
|  Location | レスポンス  | URI  | リソースの最終更新日時を示す。  |
| Host |  リクエスト | ホスト名とホスト番号  | リクエストしたURIのホスト名とポート番号を示す。  |

# コンテントネゴシエーション
| HTTPヘッダ | 利用するメッセージ| 値 | 関連ステータスコード | 説明 |
|:-:|:-:|:-:|:-:|:-|
| Accept  | リクエスト  | メディアタイプの優先度  | 300 Multiple Choices,406 Not Acceptable  | クライアントが理解できるメディアタイプを指定 |
| Accept-Charset  |  リクエスト | 文字エンコーディングの優先度  |  300 Multiple Choices,406 Not Acceptable  | クライアントが理解できる文字エンコーディングを指定  |
| Accept-Encoding  |  リクエスト |  圧縮方式の優先度 |  300 Multiple Choices,406 Not Acceptable  |  クライアントが理解できる圧縮方式を指定 |
|  Accept-Language |  リクエスト |   |   300 Multiple Choices,406 Not Acceptable | クライアントが理解できる言語タグを指定  |
|  Vary | レスポンス  | Accept-*ヘッダのリスト  | - |  サーバがコンテントネゴシエーションを行えるヘッダを示す |

# 条件付きリクエスト
| HTTPヘッダ | 利用するメッセージ| 値 | 関連ステータスコード | 関連メソッド |説明 |
|:-:|:-:|:-:|:-:|:-:|:-|
|  Etag | レスポンス  |  ETagの値を示す文字列 |  - |  - |  リソースが更新されたら変化する値であるETagを示す|
|  If-None-Match |リクエスト | Etag  | -  |  GET |  提示したETagと合致しなかったときにリソースを取得することを示す |
| If-Modified-Since  | リクエスト | 日時  |  - |  GET |  提示した日時以降にリソースが更新されていたらリソースを取得することを示す |
| If-Match  | リクエスト   |  Etag | 412 Precondition Failed  | PUT、DELETE  |  提示したETagと合致したらリクエストを実行することを示す |
|If-Unmodified-Since   | リクエスト   | 日時  |  412 Precondition Failed |  PUT、DELETE |  提示した日時以降リソースが更新されていなかったらリクエストを実行することを示す|

# 部分的GET
| HTTPヘッダ | 利用するメッセージ| 値 | 関連ステータスコード | 関連メソッド |説明 |
|:-:|:-:|:-:|:-:|:-:|:-|
| Range  |リクエスト   | 取得したい部分(バイト)  |  - |  GET | クライアントが部分的GETでリソースの一部を取得したいときに、その幅をバイトで指定  |
| If-Range  | リクエスト  |  Etagまたは日時 |  - | GET  |  クライアントがリソースの一部を保持していて、そのリソースの別の部分をほしい場合、If-MatchヘッダやIf-Unmodified-SinceヘッダとRangeヘッダを組み合わせて、条件付きGETと部分的GETを一緒に発行できる |
|  Accept-Range |  レスポンス  | bytesまたはnone  |  206 Partial Content|  GET、HEAD | リクエストしたリソースが部分的GETできるかどうかを示す。  |
|  Content-Range |  レスポンス  | バイト幅  |  206 Partial Content | GET  | 部分的GETで取得したボディがリソースのどの部分に該当するかをバイト幅で示す  |

# キャッシュ
| HTTPヘッダ | 利用するメッセージ| 値 |  説明 |
|:-:|:-:|:-:|:-|
|  Pragma |  リクエスト、レスポンス | no-cache   | もともとは実装の特別な振る舞いを示すヘッダだったが、歴史的理由から値にはno-cacheだけをとり、このリソースがキャッシュできないことを示す  |
|  Cache-Control |  リクエスト、レスポンス |  仕様で定められたコントロール識別子no-cache、max-age: xxxxxなど |  クライアントとサーバが従うべきキャッシュ方法を示す |
| Expires  |  レスポンス |   日時|  レスポンスのボディがキャッシュとして新鮮でなくなる日時を示す。 |
| Age  | レスポンス  |  経過時間（秒） |  プロキシなどのHTTPキャッシュがオリジナルのサーバで生成されてからの経過時間を示す |

# 認証
| HTTPヘッダ | 利用するメッセージ| 値 | 関連ステータスコード | 説明 |
|:-:|:-:|:-:|:-:|:-|
|WWW-Authenticate | レスポンス | 認証方式 |  401 Unauthorized |  401 Unauthorizedを返す際に、サーバがサポートする認証方式を示す。 |
| Authorization  | リクエスト   |  認証情報 | 401 Unauthorized  |認証する際に、認証情報を提示|
| Proxy-Authenticate  | レスポンス |  認証方式 | 407 Proxy Authentication Required  |  407 Proxy Authentication Requiredを返す際に、プロキシがサポートする認証方式を示す |
| Proxy-Authorization  |  リクエスト | 認証情報  |  - |  プロキシ認証する際に、認証情報を提示 |
| X-WSSE  |  リクエスト | 認証情報  | -  | WSSE認証する際に、認証情報を提示  |

# チャンク転送
| HTTPヘッダ | 利用するメッセージ| 値 |  説明 |
|:-:|:-:|:-:|:-|
| TRansfer-Encoding  |  リクエスト、レスポンス |  chunked |  チャンク転送を行っていることを示す |
|  Trailer | レスポンス  | ヘッダ名のリスト  |  チャンク転送時のtrailer(メッセージの末尾に付けるヘッダ値)に含まれているヘッダを示す |
|  TE |  リクエスト |  trailer | クライアントが認識するTransfer-Encodingヘッダを指定  |

# そのほか
| HTTPヘッダ | 利用するメッセージ| 値 | 関連ステータスコード | 関連メソッド |説明 |
|:-:|:-:|:-:|:-:|:-:|:-|
|  Allow |  レスポンス |  メソッド名のリスト | 405 Method Not Allowed  |  OPTIONS |  リソースがサポートするメソッドのリストを示す |
| Connection  | リクエスト、レスポンス  |  close | -  | -  |このメッセージのあとにTCPの接続をきることを示す   |
|  MAｘ−Forwards | リクエスト  | 数値（回数）  |  - |  TRACE,OPTIONS |TRACEメソッドやOPTIONSメソッドで、中継サーバなどに残り何回転送できるかを示す |
|  Upgrade | リクエスト、レスポンス  |  プロトコル名のリスト | 101 Switching Protocols  | -  | クライアントが指定した場合は自分がサポートしているプロトコルを示す  |
| Via  |  リクエスト、レスポンス |  仲介者のホスト名、ポート番号、プロトコルバージョン |  - |  - | サーバとクライアントの間にプロキシなどの仲介者がいる場合に、仲介者それぞれのホスト名とプロトコルバージョンを記録  |
| Warning  | レスポンス  | エラーコードやテキストフレーズ  |  - |  - |  プロキシなどの仲介者が追加したステータスコードの補足である。このヘッダ専用の3桁のエラーコードとテキストフレーズで構成 |
|  Content-Disposition | リクエスト、レスポンス  |  文字列 | -  |  - |   ファイル名を示す|
|  Slug | リクエスト  | %エンコードした文字列  |  - |  POST |  リソースを新規作成するときに、新しく作成するURIに利用できる文字列のヒントとなる文字列を示す |
| X-HTTP-Override  |  リクエスト |  HTTPメソッド名 |  - |  POST |  POSTでPUT/DELETEを代用するときに、本来指定したかったメソッド名を示す |