zoukankan      html  css  js  c++  java
  • 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"); %>

  • 相关阅读:
    ionic localstorage
    angular 中文鏈接
    把jqmobi 變成jQuery 的插件 從此使用jQuery
    jqmobi 的一些設置
    ionic ngcordova map 地圖
    ionic pull to refresh 下拉更新頁面
    json 對象的序列化
    鍵盤彈出,頁面佈局被推上去了.....
    Cordova V3.0.0中config.xml配置文件的iOS Configuration
    android ios 只能輸入數字 不能輸入小數點的 函數 cordova
  • 原文地址:https://www.cnblogs.com/mooncher/p/2264194.html
Copyright © 2011-2022 走看看