• IE中使用IFrame或Frameset导致session丢失的问题


    IE中使用IFrame或Frameset导致session丢失的问题 整合客户的登录时,或者其他一个网站通过iframe时,特别是一个http页面,访问一个https页面时,常常会session失效!

     1、由于IE的安全限制,将父页面所在域加入信任站点就OK了!

     2、当“父”页面是https的,通过IFrame去访问https页面时,

    <iframe name="loginFrame" id="loginFrame" frameborder=NO scrolling=NO src="" class="iframeBody" ></iframe> 会报“有不安全的信息”

     解决: src="/" 就OK!

    3、当客户设置了1时,还是不行时,怎么办呢?又查询了一些网上的资料!

    IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,Firefox目前还不支持P3P安全特性,firefox中自然也不存在此问题了。

    在frameset里面,也就是里面的frame是来自第三方站点(不同IP或不同域名),那么默认情况下IE会自动禁用这些站点的cookie,也就是在请求某url时在HTTP header里不发送它们的cookie,包括session的cookie。注意,这些站点在response里面设置的cookie还是会被发送到浏览器的。

     在用户浏览a.php时 a.com写入的为第一方Cookie,其嵌入的iframe 指向b.php.这时b.com写入的就为第三方Cookie了,所以它是被IE挡在了大门外。所以,每次当用户提交的cookie提交时,就挂掉了.因为传不到真实的服务器.

    解决方案

     1、PHP程序

     可以直接在B网站中写入 <?php header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"') ?> 这样就能接受第三方的Cookie/Session啦。

     2、lighttpd的服务器

     server.modules = ("mod_setenv") setenv.add-response-header = ( "P3P" => "CP='CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR'")

     3、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>

    4、IIS的服务器

     增加一个网站http头来解决问题;

     管理工具-->打开IIS——〉选择一个网站 ——〉属性——〉http头,增加一个http头 然后输入头名:P3P 输入头内容:CP=CAO PSA OUR

     5、jsp页面: <% response.setHeader("P3P","CP=CAO PSA OUR"); %>

  • 相关阅读:
    正则校验录入日期是否有效(含润年)
    java截取字符串中字节长度【转】
    python基础总结(oop)
    python基础总结(函数)
    python基础总结(字符串)
    python基础总结(集合容器)
    python基础总结(判断语句*循环语句)
    python基础总结(基本类型与运算符)
    python爬虫相关的一些面试题
    python爬虫基本知识
  • 原文地址:https://www.cnblogs.com/mooncher/p/2264194.html
Copyright © 2020-2023  润新知