Cookie

作者: zhaochengqi | 来源:发表于2018-05-30 10:57 被阅读7次

    概念(MDN

    Cookie 是一个请求首部,其中含有先前由服务器通过 Set-Cookie 首部投放并存储到客户端的 HTTP cookies

    语法

    Cookie: <cookie-list>
    Cookie: name=value
    Cookie: name=value; name2=value2;
    name3=value3

    <cookie-list>
    一系列的名称/值对,形式为 <cookie-name>=<cookie-value>。名称/值对之间用分号和空格 ('; ')隔开。

    示例

    Cookie: PHPSESSID=298zf09hf012fh2; csrftoken=u32t4o3tb3gg43; _gat=1;


    document.cookie

    访问cookie

    //读取所有可从此位置访问的Cookie
    allCookies = document.cookie;
    /**
    > document.cookie
    > "wP_h=c19715ae283b7e7fcb230c4fb04fe21ba27e388c; 
    dwf_sg_task_completion=False; _ga=GA1.2.1039822207.1517630602; UM_distinctid=161d9e2cd38711-04d50da8874aca-4323461-13c680-161d9e2cd3970e; 
    csrftoken=tv5EEHAqYmtJ6WKZukqVzPdd40cLIHwa; django_language=zh-CN; 
    _gid=GA1.2.934957483.1527554632; CNZZDATA1261666818=226206623-1519778090-null%7C1527638720"
    */
    

    设置cookie

    • 以下可选的cookie属性值可以跟在键值对后,用来具体化对cookie的设定/更新,使用分号以作分隔:
      • ;path=*path* (例如 '/', '/mydir') 如果没有定义,默认为当前文档位置的路径。
      • ;domain=*domain* (例如 'example.com', '.example.com' (包括所有子域名), 'subdomain.example.com') 如果没有定义,默认为当前文档位置的路径的域名部分。
      • ;max-age=*max-age-in-seconds* (例如一年为606024*365)
      • ;expires=*date-in-GMTString-format* 如果没有定义,cookie会在对话结束时过期
        • 这个值的格式参见Date.toUTCString()
          假如二者 (指 Expires 和Max-Age) 均存在,那么 Max-Age 优先级更高。
      • ;secure (cookie只通过https协议传输)
    • cookie的值字符串可以用encodeURIComponent()来保证它不包含任何逗号、分号或空格(cookie值中禁止使用这些值).

    Example(Console)

    • //写一个新 cookie
      document.cookie = "p1=1";
      
      image.png
    • // path只能设置为当前路径的子路径
      document.cookie = "p2=1 ;path=/zh-CN/docs";
      
      image.png
    • 只能设置为这个或者默认的
      document.cookie = "p4=1 ;domain=.mozilla.org"
      //或者
      document.cookie = "p4=1 ;domain=mozilla.org"
      
      image.png
    • // 10秒后这个字段将失效(自动删除)
      document.cookie = "p5=1 ;max-age=10";
      
      image.png
    • // 设置过期时间
      document.cookie = "p6=1 ;expires="+(new Date(Date.now()+10000)).toUTCString()
      
      image.png
    • // 只有使用https带有secure选项的字段才能设置成功
      // 值无所谓 都会设置secure为true
      document.cookie = "p7=1 ;secure="
      
      image.png

    其他

    • 你可以通过更新一个cookie的过期时间为0来删除一个cookie。

    • 请注意, 更多/更大的 cookies 意味着每个请求都要包含更繁重的数据传输. 如果您只是需要存储些 "client-only" 的数据, 那么郑重建议您使用 WHATWG DOM Storage.

    • 一次只能操作一个字段: document.cookie = "p1=1; p2=1"//只添加了p1

    • 一次设置多项属性: document.cookie = "p1=1 ;path=/ ;max-age=3600"

    • name可以重复,只要属性不同:

        document.cookie = "p1=2"
        document.cookie = "p1=2 ;path=/"
        document.cookie = "p1=4"
        document.cookie = "p1=3 ;path=/"
      
      同名参数.png
      更新.png
    • document.cookie 只包含键值对的字符串,并没有属性

      document.cookie
      "p1=4; p1=3"
      
    • add

      document.cookie = "p1="
      document.cookie = ""
      document.cookie = "p2=1"
      //document.cookie
      //"p1=; ; p2=1"
      
      image.png

    相关文章

      网友评论

          本文标题:Cookie

          本文链接:https://www.haomeiwen.com/subject/yettsftx.html