【読書記録】Webを支える技術 第3部③
第9章 HTTPヘッダ
HTTPヘッダの意義
HTTPヘッダの歴史
メールと共通しているヘッダがある
- Content-Type、Dateなど
- HTTPヘッダの仕様は電子メールのメッセージ仕様をもとに定義されたため
- メールとHTTPで異なる点は、HTTPは双方向通信・メールは単一方向の通信であること
- そのため、HTTPでは電子メールにはないヘッダも存在する
MIMEメディアタイプ
- リソースの表現の種類を指定
言語指定ヘッダ
- Content-Languageの値は「言語タグ」と呼ばれる
- 例)Content-Language; ja-JP
コンテントネゴシエーション
クライアントとサーバが交渉してメディアタイプや文字エンコード、言語タグを決めることもできる
- Acceptヘッダ
- Accept-Charsetヘッダ
- Accept-Languageヘッダ
Content-Length
- メッセージにボディがある場合、そのサイズを10進数のバイトで示す
- 例)Content-Length:5538
チャンク転送
- 動的に画像を生成するようなWebサービスの場合、ファイルサイズが決まる前からレスポンスを少しずつ転送できる
- 例) Transfer-Encoding: chunked
認証
Digest認証
WSSE認証
- HTTP1.1では標準外。AtomPubなどのWebAPIの認証に使われる
- パスワードそのものをNW上に流す必要がなく、Digest認証ほど手間がかからない
- ただしサーバ側では生のパスワードを保存しておく必要がある
補足:OAuth
- Webサービス間でデータをやり取りできるようにするための仕様(認可の移譲)
キャッシュ
- サーバから取得したリソースをクライアントのローカルに蓄積し再利用
ヘッダに持つ情報
- キャッシュ可能かどうか(Pragma)
- 有効期限(Expires)
- 詳細なキャッシュ方法(Cache-Control):上記2点のヘッダの機能を代用可能
ETag
- キャッシュされたリソースにはエンティティタグ(ETagヘッダ)の情報を持つ
- リソースの更新状態を比較するために使用する(更新すると値が変わる)