第三方站点iframe内嵌场景下Session无法正常工作问题咨询
问题根因与修复方案
该故障由Chromium内核(Chrome、Edge均基于该内核)近年的安全策略迭代导致,核心原因及对应修复方案如下:
1. SameSite Cookie默认策略变更
- Chromium 80及以上版本默认将未显式配置SameSite属性的Cookie判定为
SameSite=Lax,仅同站请求会携带该类Cookie,第三方站点iframe嵌入的跨站请求默认不会携带,若你的站点功能依赖会话Cookie、身份认证Cookie就会出现异常 - 修复方案:
- 给所有需要在跨站iframe场景下携带的Cookie显式配置
SameSite=None; Secure属性 - 注意
SameSite=None必须搭配Secure属性才会生效,因此你的站点必须开启HTTPS访问
- 给所有需要在跨站iframe场景下携带的Cookie显式配置
2. 内容安全策略(CSP)嵌入限制
- 若你的站点返回的响应头中配置了
Content-Security-Policy的frame-ancestors指令,且未将第三方嵌入站点的域名加入允许列表,浏览器会阻止第三方站点嵌入你的页面 - 修复方案:
- 调整
frame-ancestors配置,将需要允许嵌入的第三方站点域名加入白名单,若需允许所有站点嵌入可配置为Content-Security-Policy: frame-ancestors *;
- 调整
3. 跨源隔离接口访问限制
- 若你的站点用到了
SharedArrayBuffer、高精度性能计时接口等高权限API,Chromium要求必须开启跨源隔离才能正常调用,跨站iframe场景默认不满足隔离条件 - 修复方案:
- 你的站点需返回两个响应头:
Cross-Origin-Embedder-Policy: require-corp、Cross-Origin-Opener-Policy: same-origin - 同时要求嵌入你的站点的第三方站点也配置上述两个响应头,才可正常调用相关高权限API
- 你的站点需返回两个响应头:
内容的提问来源于stack exchange,提问作者subhash _ti
相关产品推荐
相关产品推荐

