何为跨域跨域session/cookie?

也就是第三方session/cookie。第一方session/cookie指的是访客当前访问的网站给访客的浏览器设置的seesion /cookie, 会被存储在访客的计算机上。第三方session/cookie指的是当前访问的网站中会加载(嵌入)另外第三方的网站代码,例如促销广告,那么第三方网 站也会在访客的计算机上添加session/cookie,这种就是第三方session/cookie。

我的问题

在开发讯息在线产品(http://iap.pgia.net)测试各种浏览器的兼容性时,发现IE浏览器(v7\8)都无法登录(总是提示验证码不匹配错误),而其它浏览器无此问题(firefox、百度等)。因此可以断定这和浏览器脱不了干系。

初步分析:

细查发现,在使用IE浏览器(v7\8)访问时,服务器端日志中显示sessionId一直在变化,每次请求都会产生一个全新的sessionId.

显然这是导致无法登录的直接唯一原因,如果解决这个问题则可正常登录。

深入分析:

为什么在IE浏览器(v7\8)上会出现这种情况呢,百度了解后得知:

出于隐私安全的考虑,IE会丢失Iframe中的Cookie,IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,Firefox、Chrome 不存在此问题。

我们知道Session 其实就是基于Cookie的。客户端在第一次与服务器建立会话时,会分配给客户端一个随机的sessionId,并存于客户端cookie中,然后在之后的请求中,会带上这个Cookie,如果在客户端找不到这样的Cookie,那么服务器就会重新分配一个。

而我的应用结构恰恰如此,即内置一个iframe嵌入远程应用来实现的。

解决办法:

要解决这个问题就是要在请求时添加“P3P”协议。那么如何实现呢?

在框架页面加入如下代码:

<%
// 解决IE7\8跨域访问问题
response.setHeader("P3P","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
%>

至此,问题已解决

iframe跨域与session失效问题的更多相关文章

  1. express解决ajax跨域访问session失效问题

    最近在学习express,就用以前做的项目来进行express前后端分离的练手了,在做登陆注册的时候发现跨域的时候,session的值是会失效的,导致session里面的数据获取为undefined, ...

  2. CP="CAO PSA OUR" 用P3P header解决iframe跨域访问cookie

    1.IE浏览器iframe跨域丢失Session问题 在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的因此,网上 ...

  3. 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法

    单点登录需要在需要进入的子系统B中添加一个类,用于接收A系统传过来的参数: @Action(value = "outerLogin", results = { @Result(na ...

  4. JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...

  5. javascript跨域、iframe跨域访问

    1.window 对象 浏览器会在其打开一个 HTML 文档时创建一个对应的 window 对象.但是,如果一个文档定义了一个或多个框架(即,包含一个或多个 frame 或 iframe 标签),浏览 ...

  6. iframe跨域cookie问题

    今天在项目里面遇到了iframe跨域不能写cookie的问题.应用场景是这样的:有A和B两个业务,A要通过iframe的方式嵌入B,但是在ie下A不能通过写cookie的方式记录信息,在firefox ...

  7. iframe跨域访问

    js跨域是个讨论很多的话题.iframe跨域访问也被研究的很透了. 一般分两种情况: 一. 是同主域下面,不同子域之间的跨域: 同主域,不同子域跨域,设置相同的document.domian就可以解决 ...

  8. 利用location.hash+iframe跨域获取数据详解

    前言 如果看懂了前文利用window.name+iframe跨域获取数据,那么此文也就很好理解了.一样都是动态插入一个iframe,然后把iframe的src指向服务端地址,而服务端同样都是输出一段j ...

  9. 利用window.name+iframe跨域获取数据详解

    详解 前文提到用jsonp的方式来跨域获取数据,本文为大家介绍下如何利用window.name+iframe跨域获取数据. 首先我们要简单了解下window.name和iframe的相关知识.ifra ...

随机推荐

  1. Spring单例 和 Scope注解

    关键字  @Scope  @Qualifier  Singleton 单例 Spring是单例模式.结合Springboot的例子. Controller @Autowired private Tes ...

  2. CSU - 2058 跳一跳

    Description 冰弦非常热衷于过气微信小游戏"跳一跳",现在给出了他每次游戏时的一些信息,请你帮他计算一下每局游戏的得分. 跳一跳的游戏规则如下: 玩家操控一个小棋子,在形 ...

  3. 六、django rest_framework源码之解析器剖析

    1 绪论 网络传输数据只能传输字符串格式的,如果是列表.字典等数据类型,需要转换之后才能使用但是我们之前的rest_framework例子都没有转换就直接可以使用了,这是因为rest_framewor ...

  4. 300万大奖:欢迎参加美团联合主办的全球AI挑战赛

    2018年8月29日,由美团.创新工场.搜狗.美图联合主办的“AI Challenger 2018全球AI挑战赛”正式启动.美团CTO罗道峰.创新工场CEO李开复.搜狗CEO王小川和美图CEO吴欣鸿共 ...

  5. sql find duplicate

    SELECT GUID, COUNT(*) FROM xx GROUP BY GUID HAVING COUNT(*) > 1; SELECT name, email, COUNT(*) FRO ...

  6. JVM CPU占满问题定位

    RASP加载后出现JVM CPU占满问题,jstack -F输出信息无法找到对应占用CPU的线程 perf定位到占用CPU的热代码位于Dependencies::find_finalizable_su ...

  7. JQuery基础-DAY1

    jQuery介绍 是一个轻量级的js框架/库,其宗旨是write less do more. jQuery对象 js的对象叫做dom对象 使用jQuery框架产生的对象是jQuery对象,是对dom对 ...

  8. django: ListView解读

    [转载注明出处: http://www.cnblogs.com/yukityan/p/8039041.html ] django内置列表视图: # 导入 from django.views.gener ...

  9. BZOJ 1191: [HNOI2006]超级英雄Hero 匈牙利算法

    1191: [HNOI2006]超级英雄Hero Time Limit: 2 Sec  Memory Limit: 256 MBSubmit: xxx  Solved: 2xx 题目连接 http:/ ...

  10. LR监控linux系统资源

    一.检查系统是否安装rpc服务 使用LR监控Linux,首先查看系统是否开启了rpc服务,其次查看Linux系统守护进程rpc.restat是否启动,该进程是必须的.可以通过命令rpcinfo -p来 ...