新版本chrome浏览器带来的跨域请求cookie丢失问题

本文探讨了谷歌浏览器登录问题的突发性现象,作者分享了遇到的问题、解决尝试过程以及参考文档,着重于灰度发布环境下复现困难的解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遇到了一个谷歌浏览器的登录问题,不稳定复现,有的人有问题,有的人没问题,是突发的,代码没有改动,参考的文档为以下两个,原来还是灰度发布的,难怪是我这没法复现,感谢两从头再来老哥

https://www.jianshu.com/p/aa80ca97f877

https://blog.youkuaiyun.com/weixin_43990297/article/details/107716124

### 解决 iframe 嵌套导致 cookie 丢失的方法 当使用 iframe 进行站加载时,现代浏览器的安全策略可能会阻止某些类型的 cookie 的传递。特别是自 Chrome 版本 80 起,默认情况下会限制第三方上下文中未指定 SameSite 属性的 cookie 发送[^1]。 对于 PHP 应用程序,在通过 iframe 访问其他名的内容时,如果遇到 session 或者 cookie 失效的情况,则可以考虑调整服务器端配置来解决问题。具体措施包括但不限于: #### 设置 HTTP Header 和 Cookie 参数 为了兼容不同浏览器的行为模式,可以在响应头中加入 P3P (Platform for Privacy Preferences Project) 策略声明以支持较老版本 Internet Explorer 对于第三方面板的需求;而对于主流现代浏览器则需确保设置了正确的 SameSite 标志位并启用 Secure 标记以便允许 HTTPS 请求中的站点请求携带 cookie 数据[^2]。 ```php // 添加 P3P 隐私政策头部信息用于IE浏览器处理Cookie header("P3P: CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""); // 修改Session启动前设置其关联Cookies参数 ini_set('session.cookie_samesite', 'None'); ini_set('session.cookie_secure', true); ``` 需要注意的是,只有在安全连接(HTTPS)环境下才能使 `SameSite=None` 生效,并且应当始终开启 secure flag 来保护敏感数据传输过程中的安全性。 #### 使用 Redis 存储 Session 除了修改 cookie 行为外,还可以改变默认的 session 存储机制,例如采用分布式缓存服务如 Redis 来保存用户的 session 信息。这不仅有助于提高系统的可扩展性和性能表现,同时也能够绕过部分由浏览器同源策略引起的难题。 ```bash # 安装Redis客户端库 composer require predis/predis # 更新 php.ini 文件指向新的session处理器 session.save_handler = redis session.save_path = "tcp://localhost:6379" ``` 以上方法可以帮助缓解由于 iframe 加载造成的 cookie 不可见现象,但实际应用过程中还需结合业务场景做适当优化调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值