前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iframe、SameSite与CEF

iframe、SameSite与CEF

作者头像
w4ngzhen
发布2023-10-17 10:24:55
4110
发布2023-10-17 10:24:55
举报
文章被收录于专栏:编译思想编译思想

iframe、SameSite与CEF

背景

本人使用CEF(或是Chrome)来加载开发的前端页面,其中使用iframe嵌入了第三方页面,在第三方页面中需要发送cookie到后端,然而加载会报错,第三方页面后端无法接受到Cookie。

原因

由于CEF(Chrome内核)的安全策略,在51版本以前、80版本以后,绝大多数情况下是禁止嵌入的iframe提交Cookie的(下文会列出哪些禁止),所以需要浏览器配置策略来允许iframe提交Cookie,这个策略就是SameSite。

SameSite 属性可以让 Cookie 在跨站请求时不会被发送,从而可以阻止跨站请求伪造攻击(CSRF)。 SameSite 可以有下面三种值:

  • Strict(严格的)。仅允许一方请求携带 Cookie,即浏览器将只发送相同站点请求的 Cookie,即当前网页 URL 与请求目标 URL 完全一致。
  • Lax(松懈的)。允许部分第三方请求携带 Cookie。

请求类型

示例

正常情况

Lax

链接

<a href="..."></a>

发送 Cookie

发送 Cookie

预加载

<link rel="prerender" href="..."/>

发送 Cookie

发送 Cookie

GET 表单

<form method="GET" action="...">

发送 Cookie

发送 Cookie

POST 表单

<form method="POST" action="...">

发送 Cookie

不发送

iframe

<iframe src="..."></iframe>

发送 Cookie

不发送

AJAX

$.get("...")

发送 Cookie

不发送

Image

<img src="...">

发送 Cookie

不发送

  • None(无)。无论是否跨站都会发送 Cookie。

解决方案

Chrome(或是基于Chromium的Edge)

在基于Chrome中,可以进入如下的页面进行配置:

  • 地址栏输入:chrome://flags/(Edge中会自动转为edge://
  • 找到SameSite by default cookiesCookies without SameSite must be secure
  • 将上面两项设置为 Disable

CEF

上面的方法很通用,不过,对于CEF项目来说,并没有这个页面供我们配置。我们可以通过命令行形式传入:

代码语言:javascript
复制
cef-app.exe(你的cef应用程序) --disable-features=SameSiteByDefaultCookies

参考

http://www.ruanyifeng.com/blog/2019/09/cookie-samesite.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-082,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • iframe、SameSite与CEF
    • 背景
      • 原因
        • 解决方案
          • Chrome(或是基于Chromium的Edge)
          • CEF
        • 参考
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档