Javascript操作クッキー詳細分析

21393 ワード

Javascript操作クッキー詳細分析
Javaerたちは、JavaEEでクッキー(javax.servlet.http .Cookie)を操作するためのインタフェースが定義されていることを知っていますが、フロントエンドのjsについては、クッキーをどのように操作しているのでしょうか.
参考資料:https://www.cnblogs.com/bellow/p/4962374.html
内容の簡略化、修正、ドキュメントのフォーマットの調整を大量に行いました.
クッキーの設定
1.メモリクッキーの設定 cookieはブラウザプロセスのメモリに保存され、ブラウザを閉じて消えるexpires=を設定しないでください.コードは次のとおりです.
//  cookie            (;)、  (,)、  (=)    ,
//        ,       ,    escape     ,        
document.cookie="str=" + escape("I love ajax");

一度に複数のクッキーを設定し、セミコロンでスペース(;)ぶんかつ
(使用は推奨されず、expires=の場合は失効)
document.cookie="userId=" + escape(828) + "; " + "userName=" + escape("hulk");

2.ディスククッキーの設定 cookieはディスクに保存されており、ブラウザを閉じた後も
ディスククッキーを設定するには、expires=を追加します.コードは次のとおりです.
//     :document.cookie="userId=828; expires=GMT_String"; 
//   GMT_String  GMT          ,      ,cookie   ,    

//        
var date = new Date(); 
var expiresDays = 10; 
// date   10       
date.setTime(date.getTime() + expiresDays*24*3600*1000);
document.cookie = "str=" + escape("I love ajax") + "; " + "expires=" + date.toGMTString();

3.補充
  • は、クッキーまたはブラウザの違いを無効にするか、またはブラウザがjsをローカルで操作しないために実験に失敗する可能性がある
  • .
  • document.クッキーは属性のように見え、異なる値を与えることができます.しかし、一般的な属性とは異なり、その付与値を変更することは、
    //           cookie,   userId userName
    // document.cookie    document.addCookie()    
    document.cookie = "userId=" + escape(828);
    document.cookie = "userName=" + escape("hulk");
    
  • などの元の値を失うことを意味しない.
  • 同じクッキー名は、前者の値
    document.cookie = "userName=" + escape("hulk");
    
    //        
    document.cookie = "userName=" + escape("stone");
    
  • を上書きする.
  • は、クッキーのnameとしてキーワードexpirespathを使用しないことが望ましい.
    クッキーの読み込みdocument.cookieを使用してすべてのクッキー値を取得し、結果は文字列であり、文字列切り取りによって対応する値を取得します.
    document.cookie = "userId=" + escape(9527); 
    document.cookie = "userName=" + escape("Stone Wang;  "); 
    var strCookie = document.cookie;
    alert(strCookie); //   :userId=9527; userName=Stone%20Wang%3B%u941C%u5B2C%u6553
    alert(unescape(strCookie));//   :userId=9527; userName=Stone Wang;  
    
    //  :              ,             ,        
    

    クッキーの削除
    クッキーを削除するには、その有効期限を過去の時間に設定できます.
    <script language="JavaScript" type="text/javascript"> 
    //       
    var date = new Date(); 
    // date         
    date.setTime(date.getTime() - 10000); 
    // userId  cookie   
    document.cookie="userId=828; expires=" + date.toGMTString(); 
    </script>
    

    クッキーへのアクセス可能なパスの指定
    1.pathの指定
    デフォルトでは、ページにクッキーが作成されている場合、ページが存在するディレクトリの もクッキーにアクセスできます.このディレクトリの下にサブディレクトリがある場合は、 にもアクセスできます.
    例えばwww.xxx.com/html/x.htmlで作成されたクッキーは、
  • は、同じディレクトリwww.xxx.com/html/x.htmlまたはサブディレクトリwww.xxx.com/html/sub/x.htmlによってアクセスすることができる
  • .
  • 親ディレクトリwww.xxx.com/x.htmlおよびその他のディレクトリwww.xxx.com/html/other/x.htmlによって
  • にアクセスすることはできない.
    クッキーがアクセスできるディレクトリを制御するには、pathパラメータを使用してクッキーを設定する必要があります.構文は次のとおりです.
    document.cookie="name=value; path=cookieDir";
    

    ここで、cookieDirは、cookieにアクセス可能なディレクトリを表す.例:
    document.cookie="userId=320; path=/shop";
    

    現在のクッキーはshopディレクトリでしか使用できないことを示します.
    クッキーをWebサイト全体で利用できるようにするには、クッキーをdirはルートディレクトリとして指定します.たとえば、次のようにします.
    document.cookie="userId=320; path=/";
    

    2.domainの指定
    アクセス可能なクッキーを指定するホスト名とパスは、同じドメインの異なるホストを指します.たとえば、www.google.comgmail.google.comは、2つの異なるホスト名です.デフォルトでは、1つのホストで作成されたクッキーは、別のホストではアクセスできません.
    ただし、domainパラメータを使用して、構文フォーマットは次のとおりです.
    document.cookie="name=value; domain=cookieDomain"; 
    

    Googleを例にとると、ホスト間アクセスを実現するには、次のように書くことができます.
    document.cookie="name=value;domain=.google.com";
    

    これで、すべてのgoogle.comの下のホストはこのクッキーにアクセスできます.
    に付随
    原生jsのAPIが不便なため、ここではよく使われるfunctionをカプセル化しています
  • クッキー
  • を追加
    この関数は、クッキー名、クッキー値、および何時間後に期限切れになるかの3つのパラメータを受信します.ここでexpiresHoursが0の場合、有効期限は設定されません.つまり、ブラウザが閉じたときにクッキーが自動的に消えます.
    <script language="JavaScript" type="text/javascript">
        function addCookie(name, value, expiresHours) {
            var cookieString = name + "=" + escape(value);
            //          
            if(expiresHours > 0) {
                var date = new Date();
                date.setTime(date.getTime() + expiresHours*3600*1000);
                cookieString = cookieString + "; expires=" + date.toGMTString();
            }
            document.cookie = cookieString;
        }
    script>
    
  • 指定名のクッキー値
  • を取得する
    この関数はnameという名前のクッキー値を返し、存在しない場合は空を返します.
    <script language="JavaScript" type="text/javascript">
        function getCookie(name) {
            var strCookie = document.cookie;
            var arrCookie = strCookie.split("; ");
            for(var i = 0; i < arrCookie.length; i++) {
                var arr = arrCookie[i].split("=");
                if(arr[0] == name) {
                    return arr[1];
                }
            }
            return "";
        }
    script>
    
  • 指定された名前のクッキーを削除する
  • 指定した名前のクッキーを削除できます
    <script language="JavaScript" type="text/javascript"> 
        function deleteCookie(name) {
            var date = new Date();
            date.setTime(date.getTime() - 10000);
            document.cookie = name + "=v; expires=" + date.toGMTString();
        }
    script>