IE 跨域cookie无效的解决

10 篇文章 0 订阅

    在前面的文章中“谷歌浏览器Chrome 80版本默认SameSite导致跨域请求Cookie丢失”,我们知道 Chrome 升级到80版本后,默认限制了跨域携带cookie给后端。在解决这个问题的同时,发现有用户在使用 IE 浏览器时,通过IFrame嵌套页面时,也出现了Cookie丢失的问题。

    经过查找,发现原来是 IE 有个叫P3P(The Platform for Privacy Preferences)隐私参数选择平台这样一个功能。如果 frame 是来自第三方站点(不同IP或不同域名),那么默认情况下 IE 会自动禁用这些站点的cookie,也就是在请求某url时在HTTP header里不发送它们的 cookie,包括 session 的 cookie。注意,这些站点在 response里面设置的cookie还是会被发送到浏览器的。

    但像IE 6.0和IE 7.0有个自己的标准,要支持P3P,IE 6的缺省隐私等级设置为"中"——即"阻止没有合同隐私策略的第三方cookie"。而在用户通过frame嵌套浏览第三方网页时,就造成了跨域,第三方网站的Cookie就会丢失。

    要解决这个问题,只需要在header中添加P3P即可

    PHP程序处理方式:

header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"')

    apache的服务器:

<VirtualHost>
Header set P3P 'CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'
</VirtualHost>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值