HTTPリクエスト・レスポンスヘッダ@PHP技術

telnetでHTTP通信する過程でHTTPについて調べていたのですが、
記事が大きくなったので別枠を設けました。


参考記事
HTTPリクエストヘッダ
http://itpro.nikkeibp.co.jp/article/COLUMN/20080516/302045/?ST=oss&P=1
HTTPレスポンス
http://itpro.nikkeibp.co.jp/article/COLUMN/20080516/302045/?ST=oss&P=3

  • HTTPについて

http://www.studyinghttp.net/

RFCの日本語訳が出てくるのですが、用語ばかりで分かりづらい。



(なんとか一通り目を通せた)

各ヘッダの意味を簡単に書いてます ?はよくわからないところ。

Accept ブラウザで使えるファイル形式
Accept-Charset 〃文字コード
Accept-Language 〃国の言語
Age リソース生成からの経過時間(使い方がイメージできない)
Allow ブラウザから指定できるメソッド
Authorization 認証受ける時、HTTPレスポンスの後、このヘッダを使って認証する
Cache-Control キャッシュ制御。no-cacheなど
Connection closeを指定するとレスポンス後、接続を終了する。プロキシを超えないらしい。
Content-Language ボディの言語
Content-Length ボディのバイト数
Content-Location 返されるべきリソースのURI(再接続を強制しない)
Content-Range (わからない)
Content-Type ボディのデータ形式 MIME表記
Date メッセージが作成された時刻?メッセージってなんだろう
Expect サーバーの振る舞いの要求?(使い方がわからない)
Expires 有効期限
From アクセスしている人のメールアドレス
Host リクエストURI。必須。
If-Modified-Since コンテンツの更新の有無
If-Unmodified-Since コンテンツの更新の有無
Last-Modified コンテンツの更新日
Location 返されるべきリソースのURI(再接続を強制する)
Max-Forwards 転送していい回数。プロキシ制限とか。
Pragma 特別な指示に必要らしい(使い方がわからない)
 Pragma: no-cache = Cache-Control: no-cache と同じく扱われるべきだと書いてある。
Range (部分的GETの時に使う)部分的GET→調べる
Referer ページに訪れる前のURI
Retry-After 503エラーと一緒に利用不可時間を返す時に使う
Server サーバーアプリケーション名(プロキシの時はViaヘッダに名前を追加する?)
Upgrade 切替できる通信プロトコル。OPTIONSメソッド?でリクエストする
User-Agent ブラウザ名とか使っているクライアント名
Vary (よくわからない) →指定された値によってリソースの表現を変えることができる
Via 経由したプロキシが入るループ検知に使用するらしい…(未確認)

エンドトゥエンドヘッダとホップバイホップヘッダについて→調査する

なんか、実感が沸きにくいので、身近なサイトのヘッダを読んでみる
ニコニコ動画
レスポンスコード 200
HTTP1.1
Apache使ってる
ニコニコ動画独自のヘッダが2つ。
gzipで送られてきた
14672バイトで送信された。
データを伸長したら50971バイトになるらしい。
このレスポンスが終了したら接続は終了する
最終的なデータはテキスト形式
…って読めた!?おおー
VaryとDateヘッダが想定と違った。


Varyって指定された値によってリソースの表現を変えることができる…
User-Agentが指定されていれば、User-Agent(ブラウザ?)ごとにレスポンスを変えることができる?じゃぁ、ニコニコ動画
Vary: Accept-Encodingって?
…優先度・取り扱い可能な文字コードによってレスポンスを変える的な!?


http の Vary レスポンスヘッダの意味と使用例

Dateヘッダは夜21:00にアクセスすれば21:00って返ってくると思っていましたが、GMTでした。→12:00で返ってくる