Webフロントエンドデータストア-クッキー機構

2875 ワード

HTTPCookieは、通常はクッキーと呼ばれ、クライアントがセッション情報を記憶するために用いられる.例えば、私たちが普段使っているブラウザは、あるウェブページのログインユーザ名を保存しています.ブラウザが提供する仕組みです.javascriptによってクッキーを処理します.すなわち、BOMのdocument.co okie属性です.
   Cookieは性質的に特定のドメイン名に結び付けられています.クッキーを設定した後、そのドメイン名を作成するために要求を送信すると、このクッキーが含まれます.この制限は、cookieが承認された受信者にしかアクセスできず、他のドメインにアクセスできないことを保証する.各ドメインのクッキー総数は限られていますが、ブラウザ間にはそれぞれ違いがあります.火狐制限は50個で、IE 7とその後のバージョンは全部50個で、safariとchromeは各ドメインのcookie数量制限に対して硬性規定がない.
一、Cookieの構成:
   名前:クッキーの名前は、大文字と小文字を区別しません.
   値:クッキーに格納された文字列は、URLで符号化されなければならない.
   cookieはどのドメインに対して有効であり、明確に決定されていない場合、cookieが設定されているドメインから来たものとみなされる.
   パス:ドメインを指定するパスは、cookieをサーバに送信するべきです.例えば、設定http://www.wrox.com/books訪問することができます.同じドメイン名の場合でもhttp://www.wrox.comのページはクッキー情報を送信しません.要求しても同じドメイン名から来ます.
   削除時間:cookieを削除するための正確な時間、この値はGMTフォーマットの日付(Wdy、DD-Mon-YYY HH:MM:SS GMT)です.
  安全標識:指定後、cookieはSSL接続を使用する時のみ料理をサーバーに送ります.例えばhttpsしか使えません.httpでは送れません.
二、javascript処理cookie
  Cookieフォーマット:
     Dcument.co okie=name=value;expires=expiration_タイムpath=domain_パスdomain=domain_name名前とキーパッドだけが必要です.
      例えば、name=sssを1日間、ドメイン名はwww.baidu.comで、パスはwww.baidu.com/book sです.
Dcument.co okie="name=sss"expires=(Date.getDate()+1*24*3600*1000).toGMT String()domain=www.baidu.compath="wwww.baidu.com/book s;
このような読み書きは直感的ではなく、普通は関数を書いてクッキーの機能を簡略化します.基本的な3つの操作:設定、読み込み、削除.
 
   var cookieUtil={
      /*  cookie*/
    set:function(name,value,expires,path,domain,secure){
        var cookie=encodeURIComponent(name)+"="+encodeURIComponent(value);
        if(expires instanceof Date){
          cookie+="; expires="+expires.toGMTString();
        }else{
            var date=new Date();
            date.setTime(date.getTime()+expires*24*3600*1000);
            cookie+="; expires="+date.toGMTString();
        }
        if(path){
            cookie+="; path="+path;
        }
        if(domain){
            cookie+="; domain="+domain;
        }
        if (secure) {
            cookie+="; "+secure;
        }
        document.cookie=cookie;
    },
    /*  cookie*/
    get:function(name){
        var cookieName=encodeURIComponent(name);
        /*       cookie*/
        var restr="(^| )"+cookieName+"=([^;]*)(;|$)";
        var reg=new RegExp(restr);
        var cookieValue=document.cookie.match(reg)[2];
        /*     cookie*/
        /*var cookieStart=document.cookie.indexOf(cookieName+“=”);
        var cookieValue=null;
        if(cookieStart>-1){
            var cookieEnd=document.cookie.indexOf(";",cookieStart);
            if(cookieEnd==-1){
                cookieEnd=document.cookie.length;
            }
            cookieValue=decodeURIComponent(document.cookie.substring(cookieStart
            +cookieName.length,cookieEnd));
        }*/
        return cookieValue;
    }
}