如何在子域名设置Cookie并在主域名读取?
- 直接说结论:子域名根本没法设置能让主域名读取的Cookie,这是浏览器的安全限制,不是代码写错了。
- Cookie的域名规则是单向的:主域名(比如example.com)设置Cookie时,把domain设为
.example.com或者example.com,所有子域名(包括api.example.com)都能读到;但反过来,子域名api.example.com不管怎么填domain参数,浏览器都只会让这个子域名以及它的下级子域名读取该Cookie,主域名example.com完全拿不到。 - 你之前没迁移的时候Cookie正常,是因为当时是在主域名下设置的,符合规则。
- 给几个可行的解决方向:
- 把设置Cookie的逻辑移回主域名example.com的页面或脚本里执行;
- 让主域名的页面发起请求到api.example.com拿到用户哈希,再由主域名这边来设置Cookie;
- 要是不想动主域名的代码,也可以考虑用postMessage跨域传递数据,或者把敏感数据加密后通过URL参数传递(但URL参数有长度限制,且要注意安全)。
内容的提问来源于stack exchange,提问作者Tony Merryfield
相关产品推荐
相关产品推荐

