跨域登录 / Token 共享 踩坑记录

跨域登录 / Token 共享 踩坑记录

背景

  • 项目中存在 a.com 嵌套 b.com 的场景。
  • b.com 有自己的登录逻辑,并将 token 写入 Cookie。
  • 发现 Cookie 在跨域 iframe 场景下不生效,但当 a.comb.com 属于同一主域时,可以正常使用。

踩坑点总结

  • 现象:在 iframe 中登录 b.com,前端通过 JS 设置 Cookie,不生效。
  • 原因:浏览器(Chrome 80+)对第三方 Cookie 默认限制,iframe 中 JS 设置 Cookie 会被拦截。
  • 解决:
    • 必须由 后端通过 Set-Cookie header 设置 Cookie
    • 并且满足:SameSite=None; Secure + HTTPS。

  • 现象:在 DevTools 里能看到 Cookie,但请求时没有携带。
  • 原因:SameSite 策略阻止了第三方请求带上 Cookie。
  • 解决:
    • 确认 Cookie 响应头:

      css 复制代码
      Set-Cookie: token=xxxx; Path=/; Domain=b.com; SameSite=None; Secure
    • 确认请求走的是 HTTPS。


3. 正常模式 vs 无痕模式差异

  • 正常模式
    • 第三方 Cookie 还能用,但控制台有警告: "来自 xxx.com 的 Cookie 可能因第三方 Cookie 逐步淘汰机制而被屏蔽"
  • 无痕模式
    • 第三方 Cookie 默认直接被屏蔽,即使 SameSite=None; Secure 也不行。
  • 结论
    • 这是 Chrome 正在逐步淘汰第三方 Cookie 的表现,未来(2025 前后)即使正常模式也会全面禁用。

4. localStorage / sessionStorage 的限制

  • 同源策略:只能在相同 origin 下访问,a.com 无法访问 b.com 的存储。
  • iframe 内部
    • b.com 的脚本可以访问自己的 localStorage/sessionStorage。
    • 但在 Safari、无痕模式、以及部分 Chrome 实验中,第三方 iframe 的存储会被完全禁用。
  • 解决 :可以使用 Storage Access API 在用户交互时申请存储访问,但只是过渡方案。

5. Storage Access API

  • 用途:允许嵌入的第三方 iframe(如 b.com)在 用户交互后 申请访问自己的 Cookie/localStorage。

  • API 示例:

    js 复制代码
    document.hasStorageAccess().then((hasAccess) => {
      if (!hasAccess) {
        document
          .requestStorageAccess()
          .then(() => {
            console.log("已获取存储访问权限");
          })
          .catch(() => {
            console.warn("用户拒绝授权");
          });
      }
    });
相关推荐
thatway19894 小时前
闲聊-关于AI终结者的警醒
前端
努力的小郑4 小时前
突发!Claude Code 51万行源码全网裸奔:一场史诗级“开源”事故,国内大厂笑麻了
前端·后端·ai编程
七度黑光4 小时前
用 openclaw 给故障复盘打分:质量审核自动化实践
运维·服务器·前端·数据库·自动化
HashTang4 小时前
Claude Code 源码中 REPL.tsx 深度解析:一个 5005 行 React 组件的架构启示
前端·后端·ai编程
wendycwb5 小时前
前端城市地址根据最后一级倒推,获取各层级id的方法
前端·vue.js·typescript
终端鹿5 小时前
Vue3 模板引用 (ref):操作 DOM 与子组件实例 从入门到精通
前端·javascript·vue.js
千寻girling6 小时前
不知道 Java 全栈 + AI 编程有没有搞头 ?
前端·人工智能·后端
小码哥_常6 小时前
Android开发:精准捕获应用的前后台行踪
前端
蜡台6 小时前
Vue 打包优化
前端·javascript·vue.js·vite·vue-cli
木斯佳6 小时前
前端八股文面经大全:快手前端一面 (2026-03-29)·面经深度解析
前端·宏任务·原型链·闭包