cookie详解

309 阅读2分钟

「这是我参与2022首次更文挑战的第12天,活动详情查看:2022首次更文挑战

cookie是存储在客户端中,只能存储文本,用于存储会话信息的。每当客户端向服务端发起请求时,都会带上cookie以表明身份,在我们最常用到的就是登陆;当我们第一次登陆成功后,后台会返回一个token给到前端,前端就将它存储在cookie里,在它的生命周期内每次向后端发起请求时都会带上这个token。

cookie的构成

Set-Cookie: name=value[; expires=date][; max-age=secondes][; domain=domain][; path=path][; secure][; HttpOnly][; SameSite=Lax|Strict]

在上面的例子中显示,name是唯一确定cookie的名称,虽然是不区分大小写,但是为了可读性更强点,最好还是以驼峰命名法来写比较好(这样看起来也比较舒服点);value是cookie的值,必须被URL编码;expires表示cookie的有效时间,当到达这个时间后,cookie就会被删除掉,默认的情况下,浏览器在会话结束后会将cookie删除,但是你也可以自己设置时间来删除它,这个时间是GMT格式的日期,有一点特别说明,假如你一不小心吧失效时间写成已经过去的时间,那么你这个cookie就会立马被删除掉,所以设置的时候一定要注意下;max-age表示的是cookie的有效时间,它是一个时间段,单位为秒;domain指定cookie在哪个域有效,向这个域发送请求时都会带上cookie以验证身份,如果没有明确设定,那么这个域就会被认作来自设置cookie的那个域;path表示的是指定域下面的指定路径,只有在这个指定的路径下发起请求才会带上这个cookie,在这个指定域的其他路径下试不会的,指定域和其下面的指定路径,两者缺一不可;Secure可以设置cookie是否是安全连接,如果设置了,那么表示https发送请求会带上这个cookie,如果不设置呢,则表示所有的请求发起时都会带上这个cookie。

使用场景

  • 记录用户的登录状态
  • 记录和分析用户的行为
  • 记录购物车
  • 定制化页面

cookie书写时,要用“;”将每部分分开,它的存储大小也比较小,只有4k左右。