iframe如何读写自己的cookie?

页面域名为abc.cn,嵌入iframe域名为qwe.com。
嵌入的iframe如何读写自己域名(.qwe.com)下的cookie呢?
使用document.cookie 嵌入时打印出来是空的,不嵌入时读取正常。

阅读 5.5k
3 个回答

老生常谈的现代浏览器对第三方 Cookie 的处理了。

第一你需要升级成 HTTPS,无论父站点还是被嵌入的站点;第二你需要写入 Cookie 时增加 Secure; SameSite=None; 标记,无论是你 JS 写入还是服务端 Set-Cookie 返回都是如此。

前面已经有人说了,就不在重复了。这里说一个另外的思路。就是iframe里面直接嵌套其他站点的时候(不是自己能控制的情况)。如何获取其他站点的cookie。
第一种。通过chrome扩展的webrequest的onHeadersReceived这个hook来拿到对应的cookie。如果是作为前端的话,这个应该是比较适合的。
第二种。通过代理的形式。这个得后端支持。

设置一下document.domain: 如果两个域名属于同一个主域名的话,你可以在主页面和iframe里都设置document.domain成相同的主域名。这样,两个页面就属于同一个源,可以相互访问Cookie。或者用用postMessage

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏