HTTP

HTTP(Hypertext Transfer Protocol)は分散、協調ハイパーメディア情報システムで、必要とされる軽く、速いアプリケーションレベルのプロトコルである(RFC1945)。

1、メソッド

メソッドはHTTPサーバーに対しURIの操作を行うための”コマンド”である。いくつかのメソッドは特定のサーバの実装にのみ見受けられるのもでRFCの付録や追記として掲載されており、広く使用されているものではないことに注意しなければならない。

表1 HTTPメソッド
メソッド 適用 説明
GET 1.0 サーバーから指定されたURIの情報を引き出す。
HEAD 1.0 GETと同じだが、ヘッダのみを引き出す。
POST 1.0 サーバにデータを送る。
PUT 1.0* 1.1 指定したURIにリクエストのボディ部に格納された情報を格納するように要求する。
DELETE 1.0/1.1 URIで指定された情報を削除するようにサーバーに要求する。
LINK 1.0 指定されたURIと他のリソースとの間をリンクさせる。
UNLINK 1.0* リソース間のリンクを切る。
OPTIONS 1.1 指定されたURIで識別されるリクエスト/レスポンスチェインにおける使用できる通信オプションに関する情報を要求する。
TRACE 1.1 リクエストのボディ部をそのまま返すように要求
PATCH 1.1* PUTと似ているが、送られるのは両者の差分だけ。

 *は付録もしくは追加情報として記載されているメソッドである。

 

表2 HTTPヘッダ
ヘッダ 適用 種別 説明
Age: 1.1 S Age : age-value
オリジナルサーバにおいて応答が製作されてからの経過秒数
Allow: 1.0 E Allow : methods
指定したURIで使用できるメソッドのリスト
Accept: 1.0*/1.1 C Accept: type/subtype [;q=qbalue]
クライアントが受け入れることのできるメディアタイプのリスト
Accept-Charset: 1.0*/1.1 C Accept-Charset : charset [;q=qbalue]
クライアントが受け入れ可能な文字セットのリスト
Accept-Encoding: 1.0*/1.1 C Accept-Encoding : content-coding
クライアントが受け入れ可能なエンコーディングのリスト
Accept-Language: 1.0*/1.1 C Accept-Language : language-range [;q=qbalue]
クライアントが受け入れ可能な言語のリスト
Accept-Ranges: 1.1 S Accept-Ranges : range-unit
リソースの範囲要求を受け付けるかどうかの指定
Alternates: 1.1* S Alternates :
クライアントに対しリクエストされたリソースが属性などで区別された他の有効な表現を持っていることを知らせ、ユーザーが望むものに最も合致した表現の引き続いての選択において信頼できる意味をユーザエージェントに提供するための情報を返す。
Authorization: 1.0 C Authorization : scheme credentials
クライアントに対するユーザ認証要求
Cache-Control: 1.1 G Cache-Control : cache-directives
キャッシュサーバーに対するキャッシュの扱いに関する指示のためのディレクティブ。
Connection: 1.1 G Connection : connection-tokens
コネクションを処理するために必要なオプション。ただし、proxyによる接続には使用できない。
Content-Base: 1.1 E Content-Base : absoluteURI
相対URIを解決するためのベースとなる絶対URIを指定
Content-Encoding: 1.0 E Content-Encoding : content-codings
ボディ部のエンコーディング方法
Content-Length: 1.0 E Content-Length : n
ボディ部でのバイト単位でのサイズ
Content-Language: 1.0*/1.1 E Content-Language : language-tags
ボディ部での適用言語を指定する
Content-Location: 1.1 E Content-Location : absURI|relURI
メッセージ中のエンティティのリソースの場所を示す。リソースがそれに関連した複数のエンティティをもち、それぞれが別々の場所にあって独立にアクセスする必要がある場合、そのエンティティのURIを指定する。
Content-MD5: 1.1 E Content-MD5 : md5-digest
エンティティの128bit MD5ダイジェスト
Content-Range: 1.1 E Content-Range : bytes-unit first-byte-pos "="last-body-post "/"entity-length
エンティティボディの一部を挿入する場所とエンティティの長さを指定する。
Content-transfer-Encoding: E Content-transfer-Encoding : scheme
ボディイブのエンコーディング方式を指定。ただし、使ってはいけない。
Content-Type: 1.0 E Content-Type : type/subtype
ボディ部のメディアタイプとサブタイプ
Content-Version: 1.1* E Content-Version : quotes-string
エンティティの履歴を示すバージョンタグ
Cookie: RFC2109 C Cookie : cookie-version ":"|","cookie value
Cookieをクライアントからサーバーにわたす
Date: 1.0 G Date : HTTP-date
メッセージが作成された日時
Dereved-Form: 1.1* E Dereved-Form : quoted-string
送り手による変更が行われる前に引き出されたエンティティのリソースのバージョンタグを示すために使われる
ETag: 1.1 E ETag : entitiy-tag
If-MatchヘッダやIf-None-Matchヘッダ、If-Rangeヘッダで使用するエンティティタグを定義する
Expires: 1.0 E Expires : HTTP-date
メッセージの有効期限
Form: 1.0 C Form : mailbox
ユーザーエージェントを用いサーバにリクエストを送ったの野のめいるアドレス
Host: 1.1 C Host : host[:port]
要求されたURIのホスト名とポート番号を指定する
if-Match: 1.1 C if-Match : entity-tags
指定されたエンティティタグによる条件付要求を行う
If-Modified-Since: 1.0 C If-Modified-Since : HTTP-date 
リソースが日付で指定された日時以降に変更された場合にのみリソースのコピーがメッセージとして返される
If-None-Match: 1.1 C If-None-Match : entity-tag
指定されたエンティティタグによる条件にマッチしないのもの要求する
If-Range: 1.1 C If-Range : entity-tag | HTTP-date
クライアントがキャッシュ内にエンティティの部分コピーを持っており、キャッシュ内のエンティティの全部を最新のものにしたい場合に、条件付GETとともに、Rangeリクエストヘッダを用いることができる
If-Unmodified-Since: 1.1 C If-Unmodified-Since : HTTP-date
リソースが指定された時刻以降変更されていない場合にのみリクエストに答える
Keep-Alive: 1.1 G Keep-Alive : keepalive-param
Connection :ヘッダがKeep-Aliveパラメータとともにリクエスト、もしくはレスポンスのヘッダに含まれていた場合、Connection:ヘッダとともに含まれる場合がある
Last-Modified: 1.0 E Last-Modified : HTTP-date
メッセージの送出者がリソースが最後に更新されたと信じている日時
Link: 1.0*/1.1* E Link : <URI>;link-param
二つのリソース、通常はリクエストされたりソースと他のリソースの関係を説明するような情報
Location: 1.0 S Location : absoluteURI
リクエストされたURIの正確な場所を返す。3xx応答コードとともに返された場合は、リダイレクトされたりソースのURLになる
Max-Forwards: 1.1 C Max-Forwards : nn
TRACEメッソッドとともに用いられ、リクエストを転送できるproxyまたはゲートウェイの数の上限を指定する
Meter: RFC2227    
MIME-Version: 1.0* G MIME-Version : n.m
HTTPはMIMEに従ったプロトコルではないが、メッセージを組み立てるのにどのバージョンのMIMEに準拠したかを示すためにこのヘッダが用いられることがある
Public: 1.1 S Public : methods
サーバによりサポートするメソッドのリスト
Pragama: 1.1 G Pragama : directives
実装依存のディレクティブを含む。たとえばproxyサーバに対するキャッシュのコントロールなど
Proxy-Authenticate: 1.1 S Proxy-Authenticate : challenge
応答コード407とともに用いられ、リクエストURIのproxyに適応する認証方式とパラメータを指定する
Proxy-Authorization: 1.1 C Proxy-Authorization : credentials
proxyに対し、クライアントが要求してされている権限をもっていることを示す
Range: 1.1 C Range : ranges-specifier
GETメソッドによりエンティティの一部だけを獲得するときに獲得する範囲を指定する
Referer: 1.0 C Referer : sbsURI | relURI
サーバへの情報としてリソースのURIが実際にはどのURIを経由して参照されているのかを示す
Retry-After: 1.0*/1.1 S Retry-After : HTTP-date |delta-seconds
503応答コードとともに用いられ、クライアント要求に対し、いつまでサービスが停止しているかを返す
Server: 1.0 S Server : products | comments
サーバで使用されているプログラムの情報。プロダクト名、バージョンなど
Set-Cookie: RFC2109 S Set-Cookie : cookies
Cookieをサーバからクライアントに渡す
Title: 1.0* E エンティティのタイトルを示す
Transfer-Encoding: 1.1 G Transfer-Encoding : encodings
メッセージボディの転送を安全に行うために用いられたエンコーディング法を示す
Upgrade: 1.1 G Upgrade : products
切り替えたい他の通信プロトコルを指定する
URI: 1.0*/1.1* E URI : <URIs>
リソースの他のURIを示す
User-Agent: 1.0 C User-Agent : products-or-comments
リクエストを発したユーザエージェントの情報。プロダクト名やパージョン等
Vary: 1.1 S Vary : field-names
レスポンスエンティティがサーバ駆動ネゴシエーションを用い、有効なレスポンスから選択されたということを知らせるためにサーバにより用いられる。
Via: 1.1 G Via : received-protocol received-by [comment]
ゲートウェイ、およびproxyを経由した場合ユーザエージェントとサーバとの間にどのような中間のプロトコルと中継者を経由したかを示す
Warning: 1.1 S Warning : warn-code_warn-agent_warn-text
応答コードにはあらわれないような追加の情報を返す
WWW-Authenticate: 1.0 S 応答コード401とともに返され、リクエストされた売りに必要な認証方式と認証範囲を指定する
G:ジェネラルヘッダ       C:クライアントリクエストヘッダ 
S:サーバレスポンスヘッダ  E:エンティティヘッダ

■Cache-Controlヘッダ

Cache-Control:ヘッダはキャッシュサーバに対し、キャッシュの使い方を指示するためのヘッダで、HTTP1,1でつかされた。HTTP1.0で同様な機能の一部がpragma:ヘッダへのパラメータとして利用されていた。

メッセージ 説明
no-cache レスポンスメッセージの一部、もしくは全部をキャシュしてはいけない
no-store 情報転送後、ただちに削除
max-age 指定した秒数以上たっていないレスポンスのみ受け入れる
max-stale 期限を越したレスポンスを受け付ける。値を持つ場合は、期限の超過時間が指定した秒数以下のものだけを受け付ける。
min-fresh 指定された秒数五にもまだ新鮮なレスポンスのみ受け付ける。
only-if-cached オリジナルサーバに対し、リロードも再評価もしない。すでにキャッシュの中にあるデータの見返す。

 

メッセージ 説明
public どのキャッシュでもキャッシュできる。
private レスポンスメッセージの一部、もしくは全部はただ一人のユーザに対するものであり共用キャッシュでキャッシュしてはいけない。
no-cache レスポンスメッセージの一部、もしくは全部をキャッシュしてはいけない。
no-store 情報転送後、直ちに削除
no-transform キャッシュでメッセージに対するいかなる変換も行わない。たとえば、キャッシュサーバのストレージを節約するためにGIFから、JPEGに変換するなど。
must-revalidate クライアントは再確認の必要がある。
proxy-revalidate クライアントは専用(共用ではない)キャッシュのないよう以外は再確認の必要がある
max-age 指定した秒数以上たっていないレスポンスのみを受け入れる。

 

■HTTP応答メッセージ

コード 適用 メッセージ 説明
情報メッセージ
100 1.1    
101 1.1    
成功
200 1.0    
202 1.0    
203 1.1    
204 1.0    
205 1.1    
206 1.1    
リダイレクション
300 1.0    
301 1.0    
302 1.0