cookie你真的了解吗

243 阅读2分钟

cookie为何物?cookie是存储在客户端上大小不超过4kb的文件,用来记录一些客户端的信息。

cookie的属性

name/value 设置Cookie的名称及相对应的值,对于认证Cookie,Value值包括Web服务器所提供的访问令牌

httpOnly属性: 规定了用户端不能通过document.cookie来读取文件

Path属性: 定义了Web站点上可以访问该Cookie的目录

secure属性: 指定是否使用HTTPS安全协议发送Cookie

domain属性: 指定了可以访问该 Cookie 的 Web 站点或域,。Cookie 机制并未遵循严格的同源策略,允许一个子域可以设置或获取其父域的 Cookie。

Max-Age属性: Max-Age 用于设置在 Cookie 失效之前需要经过的秒数

值得一提是一个sameSite属性。Chrome 51 开始,浏览器的 Cookie 新增加了一个SameSite属性,用来防止 CSRF 攻击和用户追踪。

这里有一个跨站的概念(注意:不是跨域):当两个url 顶级域名+二级域名不同时被认为是跨站访问。

sameSite属性有三个值: lax:允许部分第三方站点发送cookie;

none:无论是否跨站都会发送;但是要注意:HTTP 接口不支持 SameSite=none;

Strict:不允许第三方站点发送cookie;

然而Chrome 80 版本中默认sameSite设置为lax, 部分第三方站点无法发送cookie,这是一个头疼的问题 ;并且部分浏览器会将sameSite= none ;识别为sameSite = strict;

cookie 与 session

session的作用是用来记录客户端和服务器会话信息的文件 存储在服务器上;而cookie存储在客户端上。

session可以存储任何形式的信息,cookie只支持ascii编码格式。

session依赖cookie中的sessionId ,当客户端第一次与服务器会话 服务器会创建一个新的session,并将一个sessionId放在cookie中保存,这个id是唯一的不可重复的。当浏览器第二次会话时 ,服务端会根据id查找出相应的session文件。