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について
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で返ってくる