首先 ,来了解一下cookie的基本概念

cookie产生过程
- 当你向服务器发送一个请求时,
request header里默认会Cookie属性 - 如果请求里设置了
res.cookie('user',123);,则响应头里会有Set-Cookie属性 - 浏览器在响应头中发现
Set-Cookie字段,就会将该字段的值保存在内存或者硬盘中,默认过期时间是会话期 -
下一次再请求的时候,request header里会Cookie属性就会多出设置过的cookie值,服务器看到这个值就知道已经打过交道了
cookie 保存什么
-
cookie的key -
cookie的value - 到期时间
expires - 所属域名
domain - 生效的路径
path
基本用法
- 创建cookie
document.cookie = "name1=hello";
//一次只能追加写入一个cookie,不会覆盖已有的
- 获取cookie
let name = document.cookie.split(';');
//一次会获取所有的cookie,所以可根据 ; 来分隔所有属性
- 删除cookie
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
//设置一个过去的时间
cookie属性
-
value——指定cookie的值 -
expires——指定cookie过期时间,格式采用Date.toUTCString(),将Date对象转换为字符串- 如果不设置该属性,或设置为
null,则只在当前会话期有效,浏览器一旦关闭,cookie就会被删除
- 如果不设置该属性,或设置为
-
domain——指定cookie所在的域名,如果未指定,默认为设定该cookie的域名- 举例:
www.baidu.com/test/test.html,那么domain默认是www.baidu.com,并且会对所有子域名有效,也不能设置为google.com,只有访问的域名匹配domain属性,cookie才会发送到服务器
- 举例:
-
path——用来指定路径,如果未指定,默认为请求该cookie的网页路径,也就是根目录/- 举例:
www.baidu.com/test/index.html建立了一个cookie,
那么在www.baidu.com/test/目录里的所有页面,所有子目录里的页面都可以访问这个cookie - 只有
path属性匹配向服务器发送的路径,cookie才会发送,path属性生效的前提是domain属性匹配
- 举例:
-
secure——指定cookie只能在加密协议HTTPS下发送到服务器。 -
max-age——指定cookie有效期。 -
HttpOnly——设置该cookie不能被JavaScript读取,即不会在客户端调用``document.cookies中显示出来。
浏览器的同源政策规定,两个网址只要域名相同和端口相同,就可以共享cookie不要求协议相同,也就是说,http://example.com设置的cookie,可以被https://example.com读取
相关文章推荐:
Cookie/Session的机制与安全


