首先 ,来了解一下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的机制与安全
网友评论