作成 2010.01.05
更新 2010.01.05
JavaScript で Cookie の操作
目次
Cookieの設定
書式
パラメータ
サンプル
Cookieの読み取り
書式
サンプル
Cookieの削除
説明
サンプル
Cookieの設定
書式
document.cookie = "NAME=value[; expires=GMT][; domain=domain][; path=path][; secure]";
パラメータ
パラメータ 説明
NAME 必須。ほかのパラメータとかぶらない任意の名称を使用する。設定値はエスケープする必要がある。
expires 有効期限を指定する。時刻はGMTで設定する必要がある。このパラメータが無いとブラウザを閉じた時点で消去される。
domain Cookieを読み取れるドメインを設定する。このパラメータが無いと現在のサーバーのFQDNが設定される。".example.lan" のように設定すると "example.lan" 配下のすべてのドメインでこのCookieが読み取れるようになる。シングル サイン オンで良く利用される。
path Cookieを取得できる範囲を指定する。このパラメータが無いと現在のページと同じ階層が設定される。例えば "/aaa/bbb.html" でCookieを設定した場合、"/aaa/" 内にあるページのみがCookieを取得できる。
secure https で接続したときのみ読み取り可能
サンプル
var expire_date = new Date();
// 有効期限を10日にする
expire_date.setTime(expre_date.getTime() + 10*24*60*60*1000);
var cookie_name = "key";
var cookie_value = "テスト";
// Cookie値のエスケープには escape/unescape 関数を用いるのが一般的だが、
// 日本語を正しく処理できない場合があるため encodeURIComponent/decodeURIComponent を使用する
cookie_name = encodeURIComponent( cookie_name );
cookie_value = encodeURIComponent( cookie_value );
document.cookie = cookie_name + "=" + cookie_value + "; expires=" + expire_date.toGMTString();
Cookieの読み取り
書式
string = document.cookie;
サンプル
var full_cookie_data = document.cookie;
// Cookieが複数設定されている場合、";" で区切られている
var array_cookies = full_cookie_data.split(";");
var hash_cookies = new Array();
for(var i=0; i<array_cookies.length; i++){
  array_cookies[i] = array_cookies[i].replace(/^ +| +$/,'');
  var tmp = array_cookies[i].split("=");
  hash_cookies[tmp[0]] = tmp[1];
}

// Cookieのデータをすべて取り出す。
var return_data = "";
for(var hash_key in hash_cookies){
  return_data += decodeURIComponent(hash_key) + "="
              + decodeURIComponent(hash_cookies[hash_key]) + "<br>";
}
Cookieの削除
説明

有効期限を過去に設定するか、空データを設定すればよい。

サンプル
var expire_date = new Date();
expire_date.setTime(expre_date.getTime() - 1000);
var cookie_name = "key";
document.cookie = cookie_name + "=; expires=" + expire_date.toGMTString();
タグ: JavaScript

©2004-2017 UPKEN IPv4