参考资料:
Cookie 的 SameSite 属性 - 阮一峰的网络日志 (ruanyifeng.com)
记录一下项目组在测试嵌入自主开发的iframe插件时遇到的一个问题。
首先需要交代一下背景:在Chrome51之后,为了防止CSRF攻击和用户追踪,浏览器的cookie新增加了一个属性,叫SameSite,有三个取值选择:Strict/Lax/None,其中,Chrome的SameSite属性默认为Lax,Safari默认为Strict,Edge不确定默认是啥(但是肯定不会是None),因此在嵌入之初,因为iframe的域名和父页面网站域名不一样,在打开iframe的时候会报500 Internal Server Error(如果域名一致不会报错,因此这是一个隐藏的问题),导致原本在本地可以正常使用的插件失效(其实是cookie传输失败)。
解决方式
在配置应用时,添加一句
application.config.update(SESSION_COOKIE_SAMESITE="None", SESSION_COOKIE_SECURE=True)
None允许第三方发送cookie,同时需要设置SECURE=True(cookie只能通过https协议发送)
这样就可以正常在域名不一致的网站使用开发的插件(虽然这个方式也不是特别推荐,但是因为有secure保证,所以在安全性上会提高不少)