情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

サーバサイドウェブ開発基礎 HTTP詳説 クッキー

通常、HTTPリクエストの送信とそれに対応するHTTPレスポンスの返信は1つの独立した通信であり、別々のHTTPリクエストが相互作用することはありません。

しかし、クッキーを使用すると同じサーバ(あるいは、同じドメイン)に対する複数のHTTPリクエストの間で状態を保持することができます。

クッキーはキーバリュー型のデータであり、幾つかのパラメータを伴うこともできます。

クッキーはサーバからクライアントへHTTPレスポンスの一部として送信され、クライアントは受信したクッキーを保持しておくことができます(クライアントはクッキーをいつでも自由に破棄することもできます)。

そして、サーバに対して以降のHTTPリクエストを行う際にはHTTPリクエストの一部としてクッキーを送信することができます。

これにより、サーバは以前のHTTPレスポンスで送信したクッキーを以降のHTTPリクエストで受け取れるということになり、複数のHTTPリクエストの間で状態を保持することができます。

サーバがクライアントにクッキーを送信するにはSet-Cookieヘッダフィールドを使用し、クライアントがサーバにクッキーを送信するにはCookieヘッダフィールドを使用します。

Set-Cookieヘッダフィールドの値には送信するクッキーの内容を指定します。

クッキーの内容を指定するにはキーを記述し、=を記述し、バリューを記述します。また、パラメータが存在する場合には;を付加し、パラメータを付加します。

パラメータを指定するには名称を記述し、=を記述し、値を記述します。ただし、値が存在しない場合には=と値は記述しません。また、パラメータが複数存在する場合には;で区切ります。

パラメータには下のようなものがあります。

  • Expires・・・クッキーの有効期限をHTTP日時として指定します。ただし、有効期限を指定しても必ず有効期限までクッキーが保持されるとは限りません。なお、クッキーを削除するには有効期限に過去の日時を指定します
  • Max-Age・・・クッキーの寿命を秒単位で指定します。ただし、寿命を指定しても必ず寿命までクッキーが保持されるとは限りません。ExpiresパラメータとMax-Ageパラメータの両方が指定されている場合にはMax-Ageパラメータの指定が適用されます。
  • Domain・・・クッキーが適用されるホスト名を指定します。クライアントはこのホスト名に合致するサーバにHTTPリクエストを行う際にクッキーを送信します。デフォルトはクッキーを送信したサーバのホスト名です。
  • Path・・・クッキーが適用されるパスを指定します。クライアントはこのパスに合致するURI(URL)のリソースに対してHTTPリクエストを行う際にクッキーを送信します。デフォルトはクッキーを含んでいたHTTPレスポンスのリソースのURIのパス部分のベース部分です。
  • Secure・・・クッキーが安全に送信されなければならないことを表します。クライアントは安全な接続を使ってHTTPリクエストを行う場合にのみクッキーを送信します。
  • HttpOnly・・・クッキーがHTTPリクエストを行う際以外に使用できないことを表します。

なお、複数のクッキーを送信する場合には別々のヘッダフィールドとして設定します

Set-Cookieヘッダフィールドの値には送信するクッキーのキーとバリューを指定します。

クッキーのキーとバリューを指定するにはキーを記述し、=を記述し、バリューを記述します。

パラメータを指定することはできませんので注意してください。

なお、複数のクッキーを送信する場合には1つのヘッダフィールドとして設定します。複数のクッキーのキーとバリューは;で区切ります。

使用できる文字

クッキーのキーにはヘッダフィールドの名称に使用できる文字しか使用することができません。

また、クッキーのバリューには下の文字を使用することはできません。

  • "
  • ,
  • ;
  • \
pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-http, web