HTTPの基本はステートレスなプロトコルです。ステートレスとは、State(状態)・Less(ない/少ない)という意味で、状態を保つことができないという意味です。 状態を保つために使われるのがCookieです。 Cookieは任意のサイトの初回アクセス時などにサーバーから送信され、小さな情報を保存する指示が来ます。ブラウザでは指示されたCookie情報を保存します。 別のタイミングで同じサイトにアクセスした際に、保存されたCookieはサイトのサーバーに毎回送信されます。サーバーはブラウザにて保存されたCookieを受け取り、その情報を扱うことができます。

Cookieとは

3年以内に更新されました。情報が古い可能性があります。
更新日 : 2019年03月24日

HTTPの基本はステートレスなプロトコルです。ステートレスとは、State(状態)・Less(ない/少ない)という意味で、状態を保つことができないという意味です。

状態を保つために使われるのがCookieです。

Cookieは任意のサイトの初回アクセス時などにサーバーから送信され、小さな情報を保存する指示が来ます。ブラウザでは指示されたCookie情報を保存します。

別のタイミングで同じサイトにアクセスした際に、保存されたCookieはサイトのサーバーに毎回送信されます。サーバーはブラウザにて保存されたCookieを受け取り、その情報を扱うことができます。

Cookieの主な仕様

  • Cookieとして1つのデータに付き約4KBまで保存可能
  • Expiresという有効期限を属性として付与可能
  • ドメインやパスレベルでのCookieの有効範囲を指定可能
  • Secure属性を付与することにより、HTTPSアクセスのみ有効な設定が可能
  • HttpOnly属性により、JavaScriptからのCookieへのアクセスを無効にする

他にも実験的に使用されている属性などがありますが、今回は省略します。

Cookieの流れ

上記の画像で説明します。

クライアントはCookieを持っていない場合は通常のHTTPリクエストを送ります。

次にサーバーのレスポンス時にCookieをセットするように指示を出します。これはHTTPヘッダー部分に情報があり、その情報を元にクライアントはCookieを保存します。

Cookieが保存されているクライアントでは、Cookieを、リクエストと同時に毎回サーバーに送ります。

サーバーはこのCookieを利用してそのクライアント独自の情報を扱うことができるという仕組みです。

Cookieの主な利用方法

Cookie自体はkey-value形式の名前と値を含んだ形で保存されます。

Cookieだけを利用しようとすると、以下のような問題があります。

  • Cookie1つにつき、名前と値を含めて約4KBまでしか保存できない
  • Cookie自体はクライアント(ブラウザ)に保存されるため、クライアント側で値を変更できてしまう

上記のような問題のため、セッションidを保存するために利用される機会が多いです。

セッションに関してはセッションとはを参照してください。

まとめ

Cookieに付いて基本的な内容を解説しました。

基本的にはセッション情報の保存に利用される場合がほとんどで、それ以外の場合はクライアント側で変更可能・4KBまでという制限上あまり扱われません。

WEBアプリケーションでログイン情報などを扱う際にもCookieに保存されたセッションidなどが利用されるため、重要な機能の一つですが、プログラミングをしていて直接Cookieを扱う機会は少なくなってきています。


タグ