Cookie简介
HTTP是无状态的,也就是服务器不会保存客户端任何的信息。即使他们刚刚才交换了数据。但是有些场景需要服务器记得客户端的信息,所以就引入了Cookie
Cookie详解
Cookie与HTTP中的两个字段有关:
1、SetCookie
响应头中的一个属性,服务器可以通过该属性向客户端发送Cookie。浏览器接受响应包后,会将相关的Cookie保存在浏览器本地
2、Cookie
如果服务器对浏览器发送了Cookie,那么之后浏览器访问服务器会自动发送之前写入的Cookie,也就是通过请求头中的Cookie字段发送的。
Cookie的主要属性
Cookie存储在浏览器本地,主要有以下属性:
1、Expires
过期时间,过了这个时间,Cookie就会失效,从浏览器本地缓存中删除
2、MaxAge
最大存活时间,也就是自从Cookie被缓存到浏览器本地的存活时间,过了存活时间,也会被删除。和Expires的效果一样,但是如果两者过期时间不一致,就以MaxAge为准。
3、domain
Cookie有效的主机地址,只有访问对应主机的时候,Cookie才会生效
4、Path
Cookie有效的路径,只有访问对应主机的对应路径的时候,Cookie才会生效。只有domain符合的时候,才会进一步检查Path
5、secure
只有HTTPS请求的时候,才会携带Cookie,HTTP不会
6、SameSite
SameSite是管理是否Cookie能够发送到第三方站点上,有三个取值
1、Strict :严格,不允许任何Cookie发送到任何第三方站点
2、Lax 稍微严格,只允许Get、Head的第三方站点调用
3、None 不处理,Cookie可以发送到任何第三方站点调用
跨站的概念:
只有一级域名和二级域名一样,就认为一个站点:
比如 a.badu.com 和 b.baidu.com 就认为是同站
跨源的概念:
Scheme、Host、Port都需要一致,才是同源
7、HTTP Only
只有浏览器HTTP请求才能获取调用Cookie,而JS等其他方式无法获取Cookie
Cookie安全隐患
Cookie在浏览器中本地存储的,容易被篡改,所以敏感数据不要放在Cookie里。
Cookie是明文传输的,如果非要用敏感数据要为其加密。