HTTP Header (ヘッダ)

リクエスト ヘッダ

ヘッダフィールド 説明 1.0 1.1
Host リクエスト先サーバ名。DNS名を利用する。1.1ではプロキシや仮想サーバの利用を前提に、必須としている。 ×
User-Agent Webブラウザの固有情報。
Accept 利用可能なアプリケーション メディアタイプ。複数指定、優先度指定も可能。 ×
Accept-Language 利用可能な言語コード。複数指定し、優先度を付けることが可能。 ×
Accept-Encoding 利用可能なエンコーディング形式 (Content Coding形式)。 ×
Accept-Charset 利用可能な文字セット。 ×
Keep-Alive  
Connection 接続の永続性情報。'none'が指定されると、レスポンス後の接続は解除される。
Referer 直前にリンクされていたURL。
Cookie クッキー
ヘッダフィールドの一覧 - @IT

フィールド名は、大文字/小文字の区別はされません。

レスポンス ヘッダ

ヘッダフィールド 説明 1.0 1.1
Content-Type リソース コンテンツのアプリケーション メディアタイプ。MIMEのメディアタイプと同様。
Date 日付情報。 などを受け入れる必要がある。
Expires リソース コンテンツの有効期限。Date値。
Cache-Control キャッシュのコントロールに必要な指示や情報。 ×
Content-Encoding リソース コンテンツのエンコード方法 (Content Coding方式)。1.1では、
  • gzip
  • compress
  • deflate
  • identity (エンコードなし)
が定義されている。
Content-Location リソース コンテンツの固有位置を示すURI ×
Server HTTPサーバ アプリケーション種類を示す固有テキスト値。
Content-Length リソース コンテンツのサイズ。単位はバイト。
X-XSS-Protection  
ETag エンティティ タグ。キャッシュ管理に使用される。 ×
ヘッダフィールドの一覧 - @IT

リクエストヘッダと同様、フィールド名は大文字/小文字の区別はされません。

User-Agent

User-Agentは、ブラウザやシステムの種類を表します。たとえば、このページをリクエストするときに送られたUser-Agentは次の通りです。

ブラウザではJavaScriptでこれを確認でき、文字列の意味はUserAgentString.comWhatIsMyBrowser.comで確認できます。またブラウザによっては、この文字列を改変することもできます。

User-Agentの確認

Referer (リファラ)

Referer: http://example.com/foo/

リンクをクリックすることで、それぞれのRefererの値を確認できます。

a要素
Location:
(Locationヘッダ)
Refresh:
(Refreshヘッダ)
リファラ実験 - referrer test

Cookie (クッキー)

クッキーの制限事項
制限事項 内容
ブラウザが保持できる数 300個以下
ブラウザが保持できるサーバごとの数 20個以下
1つのクッキー (名前と値を含む) のデータ量 4kB以下
※実際の制限はブラウザによって異なるため、この制限値より大きい場合もあります。Internet Explorer で、ドメインあたりの Cookie の数の制限が 20 から 50 に増加する

通信フォーマット

取得 (Request Header)

Cookie: name1=value1; name2=value2

設定 (Response Header)

Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure
ヘッダ (Header)
属性 説明 既定値
expires※1 クッキーの有効期限
Wdy, DD-Mon-YYYY HH:MM:SS GMT
の書式で指定します。
ブラウザを閉じるまで
path サーバ上でクッキーを有効とするパス。

前方一致で比較され、/fooは/foobarや/foo/bar.htmlに一致する。

クッキーが設定されたドキュメントのパス
domain クッキーが有効なドメイン サーバのホスト名
secure セキュアな接続 (HTTPS接続) のみクッキーを有効とする。  
※1 有効期限はmax-age属性を使用することで、秒数による指定もできます。 5.2.2. The Max-Age Attribute - RFC 6265 - HTTP State Management Mechanism 5.2. The Set-Cookie Header - RFC 6265 - HTTP State Management Mechanism
Set-Cookie: name=value; expires=Thu, 30-Jul-2009 12:00:00 GMT;
path=/foo/; domain=.example.com

Content-Type (コンテンツタイプ)

Content-Typeは、データの種類を表します。

MIME type (MIMEタイプ)

MIME typeとはもともとMIMEでデータ形式を表すためのコード体系ですが、これがHTTPなどでもデータの種類を表すコードとして利用されています。MIMEタイプとは|Content-Type|コンテンツタイプ|MIME type - IT用語辞典 e-Words

書式はtype/subtypeで、typeに指定できるものには

  • text … 文字
  • image … 画像
  • video … 動画
  • audio … 音声
  • application … アプリケーション
  • multipart … 複数形式が混在

などがあります。特殊なsubtypeは、

  • 非公式subtype … 接頭辞「x-」を付け、「application/x-lzh」のような形式
  • 企業などの固有のデータ形式 … 接頭辞「vnd.」を付け、「application/vnd.ms-word」のような形式
  • データ形式が不明または任意のバイナリ形式 … 「application/octet-stream

のような規則で表されます。

主なMIME type
MIME type ファイル形式 一般的な拡張子
text/plain テキスト .txt
text/html HTML文書 .htm .html
text/xml XML文書 .xml
image/gif GIFイメージ .gif
audio/wav WAV .wav
video/x-flv Flashビデオ .flv
application/xml XML文書 .xml
application/x-shockwave-flash Flash .swf
IANA | MIME Media Types

MIME (Multipurpose Internet Mail Extension)

MIMEとは、電子メールで文字以外のデータを扱うための規格です。MIMEとは|Multipurpose Internet Mail Extension - IT用語辞典 e-Words

文字セット

Content-Typeではレスポンスの文字セットも表せ、MIME typeに並べて記述します。

Content-Type: text/plain; charset=UTF-8

Expires

Expires = "Expires" ":" HTTP-date
14.21 Expires - RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1

Cache-Controlと重複した設定をした場合、このExpiresよりもそちらが優先されます。

Cache-Control

キャッシュさせない、もしくはキャッシュさせる場合にはその期限を指示します。

リクエスト
 
no-cache
no-store
max-age = delta-seconds
max-stale [ = delta-seconds ]
min-fresh = delta-seconds
no-transform
only-if-cached
レスポンス
 
public
private [ = <> field-name <> ]
no-cache [ = <> field-name <> ]
no-store
no-transform
must-revalidate
proxy-revalidate
max-age = delta-seconds
s-maxage = delta-seconds
14.9 Cache-Control - RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1 14.9 Cache-Control - ハイパーテキスト転送プロトコル -- HTTP/1.1

ETag

ETagはリソースを表す固有の値です。この値はその変化を調べることにより、キャッシュの有効性の確認に使用されます。

サーバがETagに対応しているならば、レスポンスで

ETag: "123"

のように返されます。クライアントは次にサーバへリクエストするとき、これを

If-None-Match: "123"

のようにヘッダに含めます。そのときサーバのリソースに変更がなければ、サーバはHTTP/1.1 304 Not Modifiedのようにレスポンスを返します。

複数の技術系サイトから、まとめて検索