解决PHP套用Iframe访问导致cookie跨域session失效

问题

在项目A中使用iframe标签访问项目B,项目B的登录状态基于session机制,导致项目B无法登录。
一顿操作各种查询问题,定位问题在于cookie跨域失效。

解决

  1. 在项目B的session_start()之前,设置header的P3P值,并设置cookie的samesite属性:
// IE浏览器cookie跨域
header("P3P:CP=CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV");

// Chrome等浏览器cookie跨域(一定要加上secure,否则SameSite无效)
ini_set('session.cookie_samesite', "None;secure");
  1. 将项目B的session存储方式改为redis。

参考资料

https://blog.csdn.net/weixin_39864261/article/details/115574753
https://blog.csdn.net/backerli/article/details/120465246

偶然间看到FastAdmin也有此问题的解决方案,更加详细,传送门:https://doc.fastadmin.net/developer/faq.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值