改めてcookieの書き込みについてまとめます。
JavaScript
データの書き込み
基本的にエンコードするようにします。
半角スペースやセミコロンがクッキーのデータの接続記号のためエンコードしといたほうが都合がよいからです。
data='123'; enc_data = encodeURIComponent(data); cookie_string = 'data='+enc_data; document.cookie = cookie_string;
↓この部分がクッキーに書き込みを行います。
document.cookie = cookie_string;
cookie_stringの内容は「data=123」となっています。
クッキー書き込みサンプル
書き込みボタン
書き込みボタンを押すとクッキーに記録します
削除ボタン
有効期限
max-ageで書く場合
limit_sec = 60*60*24; //一日 cookie_string = 'data='+enc_data+'; ' + 'max-age='+limit_sec; document.cookie = cookie_string;
有効期限
expireで書く場合
var expire = new Date(); expire.setTime( expire.getTime() + 1000 * 3600 * 24); //世界標準時(GMT)でセットする cookie_string = 'data=123; expires=' + expire.toUTCString(); document.cookie = cookie_string;
有効期限を明示しない場合、そのクッキーはブラウザを終了すると削除されます。
範囲の指定
ドメイン配下指定サブドメインを含む場合
cookie_string += 'domain=.kipure.com; '
パス配下指定
cookie_string += 'path=/hoge/; '
https通信のときのみ、クッキーが送信したい場合
cookie_string += 'secure=true; '
JSでアクセスできなくするフラグ、高セキュリティで特にセッションできれる場合に使います。
cookie_string += 'HttpOnly=true; '
読み込み
指定クッキーの値の取得
function GetCookie( cookieName ) { var result = null; var indexOfName = cookieName + '='; var AllCookie = document.cookie; var position = AllCookie.indexOf( indexOfName ); if( position != -1 ) { var startIndex = position + indexOfName.length; var endIndex = AllCookie.indexOf( ';', startIndex ); if( endIndex == -1 ) { endIndex = AllCookie.length; } result = decodeURIComponent( AllCookie.substring( startIndex, endIndex ) ); } return result; }
クッキーを連想配列として取得
function GetAllCookies() { var result = new Array(); var allCookies = document.cookie; if( allCookies != '' ) { var cookies = allCookies.split( '; ' ); for( var i = 0; i < cookies.length; i++ ) { var cookie = cookies[ i ].split( '=' ); // クッキーの名前をキーとして 配列に追加する result[ cookie[ 0 ] ] = decodeURIComponent( cookie[ 1 ] ); } } return result; }
削除
var date = new Date(); date.setTime( date.getTime() - 1 ); cookie_string = 'data=; expires=' + date.toUTCString(); document.cookie = cookie_string;