2026年5月30日 01:00
Cookie 浏览器兼容有哪些差异?如何处理?
Cookie 浏览器兼容差异主要集中在容量限制、SameSite 默认值、第三方 Cookie、隐私保护策略和过期时间。现在不能再假设“所有浏览器都会长期保存并发送 Cookie”:Safari 的 ITP、Firefox 的 ETP、Chrome 的第三方 Cookie 收紧都会影响跨站登录、埋点和广告归因。处理思路是默认一方 Cookie、SameSite=Lax、Secure 开启,跨站场景单独设计降级方案。
追问
各浏览器容量差异要怎么记?
单个 Cookie 通常按 4KB 估算,每个域名数量上限各家不同。面试里不必背精确数字,关键是不要依赖“能存很多”,超过少量会话字段就该换存储方案。
SameSite=None 为什么必须配 Secure?
因为 SameSite=None 表示允许跨站发送 Cookie,风险更高。现代浏览器要求它只能在 HTTPS 下配合 Secure 使用,否则可能直接拒收。
Safari ITP 对业务影响最大在哪里?
跨站追踪、第三方登录态和长期归因最容易出问题。即使代码没变,Cookie 也可能被限制有效期或阻止发送,所以要用真实 Safari 和隐私模式测试。
第三方 Cookie 被禁后怎么办?
优先改成一方登录态;确实跨域时,用 OAuth 跳转、服务端会话、postMessage 或浏览器提供的新 API,而不是继续依赖隐藏 iframe 写 Cookie。
写段代码
javascriptdocument.cookie = 'sid=abc; Path=/; Secure; SameSite=Lax'; // 跨站且必须携带时: document.cookie = 'sso=abc; Path=/; Secure; SameSite=None';