cookie 的属性选项

属性名 描述
name(string) 该Cookie的名称。Cookie一旦创建,名称便不可更改
value(string) 该Cookie的值。如果值为Unicode字符,需要为字符编码。如果值为二进制数据,则需要使用BASE64编码
maxAge(number) 该Cookie失效的时间,单位秒。如果为正数,则该Cookie在maxAge秒之后失效。如果为负数,该Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该Cookie。如果为0,表示删除该Cookie。默认为–1
secure(booblean) 该Cookie是否仅被使用安全协议传输。安全协议。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false
path(string) 该Cookie的使用路径。如果设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”
domain(string) 可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”
comment 该Cookie的用处说明。浏览器显示Cookie信息的时候显示该说明
version(number) 该Cookie使用的版本号。0表示遵循Netscape的Cookie规范,1表示遵循W3C的RFC 2109规范

赋值

document.cookie看上去就像一个属性,可以赋不同的值。但它和一般的属性不一样,改变

它的赋值并不意味着丢失原来的值,例如连续执行下面两条语句:

  1. document.cookie="userId=828"
  2. document.cookie="userName=hulk"

这时浏览器将维护两个cookie,分别是userId和userName,因此给document.cookie赋值更像执行类似这样的语句:

  1. document.addCookie("userId=828")
  2. document.addCookie("userName=hulk")

事实上,浏览器就是按照这样的方式来设置cookie的,如果要改变一个cookie的值,只需重新赋值,例如:

  1. document.cookie="userId=929"

这样就将名为userId的cookie值设置为了929。

取值

下面介绍如何获取cookie的值。cookie的值可以由document.cookie直接获得:
var strCookie=document.cookie;
这将获得以分号隔开的多个名/值对所组成的字符串,这些名/值对包括了该域名下的所有cookie。
例如:

  1. document.cookie="userId=828";
  2. document.cookie="userName=hulk";
  3. var strCookie=document.cookie;
  4. alert(strCookie);

只能够一次获取所有的cookie值,而不能指定cookie名称来获得指定的值。

获取指定的cookie值,例如,要获取userId的值,可以这样实现:

  1. function getCookies(cookiesName) {
  2. const strCookie = document.cookie
  3. const arrCookie = strCookie.split('; ')
  4. let value
  5. for (let i = 0; i < arrCookie.length; i++) {
  6. const arr = arrCookie[i].split('=')
  7. if (arr[0] === cookiesName) {
  8. value = arr[1]
  9. break
  10. }
  11. }
  12. return value
  13. }
  14. const userId = getCookies('userId')

设置终止日期

删除cookie

指定可访问cookie的路径