cookie属性详解

cookie属性:name、value、expires、domain、path、secure、max-age、HttpOnly。

  • name
    name属性是必需的,它是一个键值对,用于指定Cookie的键。
  • value
    value属性是必需的,它是一个键值对,用于指定Cookie的值。
  • expires
    expires属性用于指定Cookie过期时间。它采用UTC或GMT格式,比如通过new date().toUTCString()或new Date().toGMTString()获取到的Thu, 09 Aug 2018 03:17:40 GMT。
    如果不设置该属性,或者设为null,Cookie只在当前会话(session)有效,浏览器窗口一旦关闭,当前Session结束,该Cookie就会被删除。
    浏览器根据本地时间,决定Cookie是否过期,由于本地时间是不精确的,所以没有办法保证Cookie一定会在服务器指定的时间过期。
    当设置的失效时间大于等于1天时:我们可以在 expires 属性后面直接输入XX天数。

    1.  Cookies.set('name', 'value', {
    2.    expires: 7,
    3.  });
    

    当设置的失效时间少于一天时:我们需要在当前的时间上加上失效时间。
    例如下面是设置cookie的失效时间为15分钟。

    1.  var millisecond = new Date().getTime();
    2.  var expiresTime = new Date(millisecond + 60 * 1000 * 15);
    3.   
    4.  Cookies.set('name', 'value', {
    5.    expires: expiresTime,
    6.  });
    

    如果expires设置一个过去的时间点,那么这个cookie 会被立即删掉(失效)。

  • domain
    domain属性指定Cookie所在的域名,比如example.com或subdomain.example.com。
    如果未指定,默认为设定该Cookie的域名。所指定的域名必须是当前发送Cookie的域名的一部分,比如当前访问的域名是example.com,就不能将其设为google.com。只有访问的域名匹配domain属性,Cookie才会发送到服务器。
  • path
    path属性用来指定路径,必须是绝对路径(比如/、/mydir),如果未指定,默认为请求该Cookie的网页路径。
    只有path属性匹配向服务器发送的路径,Cookie才会发送。这里的匹配不是绝对匹配,而是从根路径开始,只要path属性匹配发送路径的一部分,就可以发送。比如,path属性等于/blog,则发送路径是/blog或者/blogroll,Cookie都会发送。path属性生效的前提是domain属性匹配。
  • secure
    secure属性用来指定Cookie只能在加密协议HTTPS下发送到服务器。
    该属性只是一个开关,不需要指定值。如果通信是HTTPS协议,该开关自动打开。
  • max-age
    max-age属性用来指定Cookie有效期,比如60 * 60 * 24 * 365
    (即一年31536000秒)
    正常情况下,max-age的优先级高于expires,但是二者有一些细微差别。
  • HttpOnly
    HttpOnly属性用于设置该Cookie不能被JavaScript读取.
    (即document.cookie不会返回这个Cookie的值),只用于向服务器发送。
    Set-Cookie: key=value; HttpOnly
    上面的这个Cookie将无法用JavaScript获取。进行AJAX操作时,XMLHttpRequest对象也无法包括这个Cookie。这主要是为了防止XSS攻击盗取Cookie。

你可能感兴趣的:(其他前端技术)