首页 > 其他分享 >用P3P解决IE的iframe中每次跨域请求产生新session的问题

用P3P解决IE的iframe中每次跨域请求产生新session的问题

时间:2023-08-28 10:36:02浏览次数:37  
标签:跨域 网站 用户 session cookie 隐私 iframe P3P p3p


初来乍到,看到一篇cookie夸域的帖子,觉的他只是解决了跨二级域名的问题,自己曾经作过一个企业应用的sso,其中用到的p3p解决了cookie跨域的存取。 

第一次发帖,请各位高手多多指教 


首先介绍第一方Cookie和第三方cookie: 

第一方Cookie是来自当前正在查看的网站,或者发送到当前正在查看的网站。 


第三方Cookie是来自当前正在查看的网站以外的网站,或者发送到当前正在查看的网站以外的网站。第三方网站通常提供正在查看的网站上的内容。例如,许多站点使用来自第三方网站的广告,或者iframe的别的网站的url,这些第三方的网站可能使用的Cookie。 


然后是P3P,Platform for Privacy Preferences: 

P3P由万维网协会研制,它为Web用户提供了对自己公开信息的更多的控制。 

支持P3P的Web站点可以为浏览者声明他们的隐私策略。 

支持P3P的浏览器 则可以将Web站点的策略与用户的隐私偏好进行对比,并为用户提出不匹配的警告。 

因此,用户可以被通知有关Web隐私的处理方式。 

更详细的说明请看http://www.w3.org/P3P/的介绍 


以上几乎都是废话,我自己的理解就是通过P3P 可以使 用户自己指定浏览器的隐私策略。而这里只用到了关于cookie的一些设置。 

我们打开ie浏览器-->工具-->internet选项-->隐私分页 用户可以通过手工 “导入” 用户隐私策略文件 


通过指定用户隐私策略,就可以达到存取第三方cookie的目的,看到这也许会觉得跟web应用毫无关系,真正的问题是如何让服务器来指定用户浏览器的隐私策略? 


其实很简单,只要在响应用户请求的时候在http的头信息中增加关于p3p的配置信息就可以了


用java实现这样的功能,只要在被跨域请求的HttpServlet中加入 

 

response.setHeader("P3P","policyref=\"http://www.xxxx.com/xxx/w3c/p3p.xml CP=\"NON DSP COR CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa CONa HISa TELa OTPa OUR UNRa IND UNI COM NAV INT DEM CNT PRE LOC\"");

就可以了 


当然p3p还提供了一种简单的方式 ,来加载用户隐私策略 

通过IBM p3p的工具可以看到,CP=后面的字符串分别代表不同的策略信息,只要在http响应的头信息中增加 

 

response.setHeader("P3P","CP=\"NON DSP COR CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa CONa HISa TELa OTPa OUR UNRa IND UNI COM NAV INT DEM CNT PRE LOC\"");

而无需指定隐私策略文件也可以达到指定隐私策略的目的 

标签:跨域,网站,用户,session,cookie,隐私,iframe,P3P,p3p
From: https://blog.51cto.com/u_16237557/7260836

相关文章

  • ICCV 2023 | 通过可靠、多样和类平衡的伪标签重新审视跨域三维目标检测
    前言 本文介绍了ICCV2023被接收的文章RevisitingDomain-Adaptive3DObjectDetectionbyReliable,DiverseandClass-balancedPseudo-Labeling的介绍。这个工作通过生成可靠、多样且类别平衡的伪3D物体,实现了单模型多类别同时自训练,从而将检测器自适应到目标域的三维......
  • hibernate——Session接口中定义的saveOrUpdate()方法浅析
    Session接口中定义的saveOrUpdate方法,集合了save和update方法,根据对象的状态来选择是进行保存还是更新,那它是怎么判断当前对象的状态的呢?API中对这个方法是这样说的,它是根据一个unsaved-value来决定的。这个值是在映射文件中的<id>标签中的一个属性。<id>标签表示的是表的主键,若主......
  • 用拦截器实现session登录
    这个功能是这样的,用户在访问网站时,先要进行登录,即要访问处理登录的Action,若没有登录,即访问除了登录的Action之外的Action,则会被拦截器拦截,跳转到错误页面,提示用户还没有进行登录。所以这个拦截器的作用是如果是登录,即请求的是LoginAction,那么就不拦截这个请求,让其通过拦截器,进行登......
  • vue项目axios请求 解决跨域问题 2种方法
    前端添加vue.config.js文件 【【4k小白到全栈】进阶课好看登录页面Vue3+Ts+Pinia+Axios+VueRouyer+SpringBoot2.7+MybatisPlus前后端分离】https://www.bilibili.com/video/BV1x14y1Z74z?p=26&vd_source=da9319adec9f5f92ccc22db2f6108195 后端  response.setConte......
  • 网关的cors跨域配置
        ......
  • .NET敏捷开发框架-RDIFramework.NET V6.0发布
    1、RDIFramework.NET敏捷开发框架介绍RDIFramework.NET敏捷开发框架,是我司重磅推出的基于最新.NET6+与.NETFramework的快速信息化系统开发、整合框架,为企业快速构建跨平台、企业级的应用提供了强大支持。开发人员不需要开发系统的基础功能和公共模块,框架自身提供了强大的函数......
  • ajax完美解决跨域问题(jsonp、nginx反向代理)
    做过web前端人都知道,经常会有ajax跨域问题,下面列举我经常使用的解决办法第一种:使用jsonp,jquery的ajax方法支持jsonp,但是最大的缺点就是只支持get方式,而且服务端也要修改客户端test.html代码<!DOCTYPEhtml><html><head> <title>工作端</title> <metaname="viewport"content=......
  • IDEA 生成的 JAVA 接口允许跨域访问的配置
    1.新建一个基类,在类上方添加 @CrossOrigin属性importorg.springframework.web.bind.annotation.CrossOrigin;@CrossOriginpublicclassBaseController{}2.在其他controller中继承这个基类,其他接口就可以跨域访问了publicclassElseControllerextendsBaseContr......
  • Django项目异常:AttributeError: 'SessionStore' object has no attribute '_session_c
    Traceback(mostrecentcalllast):File"C:\ProgramFiles\python37\lib\site-packages\django\contrib\sessions\backends\base.py",line189,in_get_sessionreturnself._session_cacheAttributeError:'SessionStore'objecthas......
  • Cookie、Session及Token详解
    CookieCookie,有时也用其复数形式Cookies,类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息以加入购物车为例,每次浏览器请求后server都会将本次商品id存储在Cookie中......