`
heaven__18
  • 浏览: 29848 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

session跨域丢失问题

阅读更多

    以前做过一个系统,需要在系统(A)中集成目前现存系统(B)的功能。


    因为系统B做了权限控制,所以在系统A的数据库建立跟系统B一样的权限表,然后登录系统A后,将用户信息、权限信息等存放进session中,然后在系统B进行权限验证。


    理论上这种设计在不使用框架结构时,完全是可行的。但是如果,系统A使用了框架结构,即系统(B)中的功能页面要嵌入到系统(A)的框架中时,系统B取不到session值了,既session丢失了。


    原来是因为应用需求在一个页面的不同frame下面访问不同的域,结果造成了session丢失。


    问题根源:
    IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,Firefox目前还不支持P3P安全特性,firefox中自然也不存在此问题了。Mircosoft对此的具体描述可以参见 Privacy in Internet Explorer 6
 
    解决办法是在要嵌入的内容中(iframe指向的站点)输出P3P的主机头声明:
    php:
          header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');


    asp.net:
          HttpContext.Current.Response.AddHeader("p3p", "CP=\""IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""")

     jsp:
          response.setHeader("P3P","CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'")

     ColdFusion:
          <cfheader name="P3P" value="CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'" />


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics