前言
开始接触前端到了解浏览器,cookie这个单词就很常见,但是也没有深入的了解,只是停留在请求的携带,与loaclStorage,sessionStorage的区别。携带的值大小。
单单知道这些是完全不够,今天看公司集成的平台,走的是公用的cookie,我一时间竟不知道不同的网址的cookie是怎么共享的。
Cookie是什么?
简单来说就是一个身份证,记录状态。当发起请求时,服务器会颁发一个cookie给到浏览器,浏览器进行存储,等下次请求的时候会自动的带上这个cookie,服务器就知道你现在是什么状态。
响应头上就会有set-cookie,cookie以key=value的形式展示。
请求头上
cookie共享
我们都知道不同的协议、域名、端口都会出发浏览器的同源策略,造成跨域问题,同时cookie也是不能共享使用的,但是在公司级的开发中,一个账号是互通各个系统,系统之间的跳转也是常有的,所以每次的登录就显得十分多余。这时cookie如果的能够共享的话就解决了。
cookie中的domain
通过设置domain,我们可以将根域名相同的地址的cookie进行同步。
比如 qq.com,a.qq.com,b.qq.com 三个地址qq.com就是根域名,a. 和 b. 是二级域名,我们在cookie中设置Domain=.qq.com就可以将三个地址的cookie关联起来了。
vue项目中使用axios的withCredentials
跨域的情况下使用。设置withCredentials:true
注意
如果前端配置了这个withCredentials=true,后段设置Access-Control-Allow-Origin不能为 " * " 只能设置源地址
header("Access-Control-Allow-Origin","源地址";
header("Access-Control-Allow-Credentials", "true");