zoukankan      html  css  js  c++  java
  • chrome 不再支持iframe 携带cookie 访问第三方站点

    最近小伙伴说系统有一个跳转第三方的功能有的人电脑端不好使了,我检查了下自己的页面,发现没问题,于是一口答复:不管!!!(其实是卑微的说:那先在手机端试试吧。结果手机端正常,于是就先忙别的事情了)

    今天不经意间点了下自己手机端的功能,发现手机端也不显示了!!!然后再看电脑端也不好使了!!!吃了一惊之后赶紧开始偷偷解决bug,可不能让领导知道我写了bug!!!

    但是最近这个功能没改过啊,之前一直好好的,怎么突然就不行了呢?

    这个功能是打开第三方的页面,利用约定好的密钥token等加载登录者信息,为了让用户感觉不到是外部链接,特地嵌入进iframe加载显示,如果直接浏览器地址访问链接是成功的,换firefox浏览器原页面也是没问题的,所以首当其冲想到的就是chrome不支持iframe了吗???

    网上查了下资料,果然有重大发现!!!

     谷歌宣布将从7月14日发布的Chrome 84稳定版开始,重新恢复SameSite cookie策略,并且会逐步部署到Chrome 80以及以上的版本中。Chrome 80于今年2月份上线,谷歌就开始滚动推出SameSite更新,通过cookies的发送机制进行了一系列新的调整更好的维护用户隐私和安全。今年4月份鉴于全球疫情的爆发,谷歌宣布暂时中止该更新,以便在疫情大流行期间保持重要网站的正常运行。

     也就是说chrome从7月14号开始推行这个设置,但是因为所有用户不是同时更新或安装,所以先更新的人就先表现出问题来了。

    从Chrome 51开始,浏览器的Cookie新增加了一个SameSite属性,用来防止CSRF攻击和用户追踪。该设置当前默认是关闭的,但在Chrome 80之后,该功能默认已开启。

    CSRF攻击和用户追踪是怎么回事?看看大神阮一峰的说明:http://www.ruanyifeng.com/blog/2019/09/cookie-samesite.html

    解决方案总结:(开发者使用方案3)

    方案1、手动修改浏览器的设置,这是对普通用户而言的,对开发者来说肯定不合适。

    方案2、重新安装低版本浏览器,傻瓜方案。。。

    方案3、开发后端设定 Set-Cookie 为 SameSite=None; Secure(且可能要求必须为https方式)。

     前面说了因为该系统是嵌入的第三方的内容,短时间内要求对方添加该cookie设定来不及,而且对方为了防止CSRF也不一定会同意,所以只能暂时去掉iframe直接暴露第三方站点了。。希望有好的解决方案的童鞋评论区留下解决方案~~


    以下两项为查找资料过程中的相关知识,虽然使用场景不多,先记录下来。

     chrome 浏览器默认禁止iframe 嵌套页面下载文件:https://www.jianshu.com/p/789fd9fcd89d

    出于沙盒安全性考虑,83版本的chrome浏览器默认禁止了iframe嵌套页面通过a标签的window.open,localtion.href点击下载,
    为了解决这个问题,可以在父页面的iframe中sandbox="allow-downloads"进行解决,请不要使用allow-downloads-without-user-activation ( 允许在没有征求用户同意的情况下下载文件)
    <iframe sandbox="allow-downloads"></iframe>

    chrome 现已支持延迟加载网页中的 iframe:https://news.cnblogs.com/n/668031,通过添加 loading="lazy"属性。

    <iframe src="https://example.com" loading="lazy" width="600" height="400"></iframe>

      

  • 相关阅读:
    MySQL缓存分类
    Babel 是干什么的
    npm是干什么的?
    在改变某一项目的svn的地址,relocate
    在搭建服务器的时候,svn最好与项目所部署的服务器分开
    简述负载均衡和CDN技术
    nginx介绍
    NideShop项目的安装部署教程
    Navicat破解
    当返回的不是单独的一种数据格式
  • 原文地址:https://www.cnblogs.com/jying/p/13555016.html
Copyright © 2011-2022 走看看