作成 2010.01.05
更新 2010.01.05
更新 2010.01.05
JavaScript で 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