Cookie的共享策略

现在公司所使用的架构是由后端控制登录及全选,前端通过获取后台写入 cookie 的 token 进行接口交互。再此之前我一直都认为 cookie 和 localstorage 一样,受浏览器同源策略的影响。直到今天与后台进行技术沟通才发现 cookie 的同源策略与一般的同源策略不一样。

同源策略

所谓同源是指”协议+域名+端口”三者相同,即便两个不同的域名指向同一个 ip 地址,也非同源。同源策略/SOP(Same origin policy)是一种约定,由 Netscape 公司 1995 年引入浏览器,它是浏览器最核心也最基本的安全功能,现在所有支持 JavaScript 的浏览器都会使用这个策略。如果缺少了同源策略,浏览器很容易受到 XSS、 CSFR 等攻击。

通过上面的描述我们知道,a.abc.com、b.acb.com 和 a.abc.com:8080 3 个地址均不满足同源策略,互为跨域。然而,cookie 是区分域的,不区分端口的,在一个 ip 地址下多个端口的 cookie 是共享的。

cookie 跨域共享需满足一下条件:

  1. 共享之间的二级域名必须是解析于同一个顶级域名之下;

  2. 比如现在有两个二级域名,a.xxx.com(域名 A)和 b.xxx.com(域名 B)。两个都解析于域名 xxx.com 顶级域名之下。

  3. 现在域名 A 的登录 cookie 域名 B 下面需要使用。

  4. 域名 A 的登录 cookie 把 cookie 域设置成 xxx.com(注意不要写成www.xxx.com,因为www.xxx.com也属于二级域名,不是顶级域名),path设置成’/’

  5. 此时域名 B 下面可以读取域名 A 写入的 cookie

  6. 这样就可以实现域名 A 的 cookie 被域名 B 共享

  7. 如果要实现相互共享,就把两个域名的 cookie 域都设置成 xxx.com

参考文章:二级域名之间的 cookie 共享

[越努力,越幸运!]