iframe跨域,“须将cookie打开”异常

       近期有个项目的页面中,调用的第三方的控件,是采用iframe嵌入页面。在现场IE7环境下死活出现“须将cookie打开”异常。

        作为一个有追求的程序员,我想应该是iframe的cookie权限有关,然后就搜iframe cookie果然找到原因,详见问题来源,简而言之,就是IE由于安全性考虑,将iframe嵌入式访问第三方网站的session/cookie失效。


      所以解决方法也就出来了,

      一种是降低IE安全级别,或者对指定网站打开cookie。但是由于项目涉及多台客户端,不能去每台电脑依次操作,因此这个不作为考虑。

      另外,就是需要在第三方网站(注意是iframe嵌入页面方,之前在主页面中加测试半天,我也是醉了)中使用P3P修改安全级别,

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

  JSP:<% response.addHeader("P3P", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""); %>

     如果第三方网站如果无法协调修改,可以采用在网站服务器上设置,例如这个项目是IIS服务器

打开IIS服务-》网站-》某网站->设置-》http 响应头

添加标头:名称P3P  , 值CP=CAO PSA OUR

      轻松搞定,也是大开脑洞了。附上各个浏览器对第三方cookie的支持,因为我们的项目指定IE,因此其他的也就没有进行测试咯,各位可以参考。


不同浏览器的第三方 cookie 规则

                              限制第三方coookie

IE                              是

FireFox                      否

Chrome                      否

Safari                         是

Opera                         否



问题来源:来自http://www.myexception.cn/web/1662712.html

何为跨域跨域session/cookie?

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

IE限制第三方session/cookie

随着IE版本的不断更新,版本之间变化很大,其兼容性问题困扰着许多开发者。本问题也不例外,IE7以后,微软逐渐改进了IE安全性,其中默认设置下第三方session/cookie是不允许使用的,这就造成了使用iframe嵌入式访问另外的第三方网站时,不能为其保存会话状态,无法进行登录或跨越取值,从而影响第三方网站功能的使用。

解决方法

手动调整客户端IE浏览器的安全级别

在Internet选项-隐私卡中,调低安全级别到接受所有cookie,或者在[高级]中设置接受第三方cookie。

点评:此方法需要使用者更改客户端浏览器设置,极不便利,且会给使用者电脑带来安全隐患,故不推荐。

代码中使用P3P协议自动更改IE浏览器安全级别

P3P(Platform for Privacy Preferences)是一种可以提供这种个人隐私保护策略。具体做法是在被iframe嵌入的第三方网站代码中加入如下代码:

[java]view plaincopy

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

要注意的有:

1、上段代码是jsp的,如果是asp或php等,需要改成相应的语法,参数和取值不变。如ruby为:

[ruby]view plaincopy

response.headers["P3P"] ="CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""

2、此方法仅支持动态Web应用,也就是需要使用动态语言设置response的header,且如果是MVC架构的话,最好是在总控制器或过滤器中添加上段代码,这样改动最小。

点评:该方法不需要手动修改客户端IE设置,但需要修改第三方网站的代码,对于第三方网站不在控制范围内情况下无能为力。

在第三方网站服务器中设置P3P协议

第三方网站所使用的应用服务器程序,如果支持设置HTTP头,那么可以通过设置服务器而不必修改第三方网站代码。

例如IIS下,可以打开IIS窗口——〉选择一个网站——〉属性——〉http头,增加一个http头

然后输入头名:P3P

输入头内容:CP=CAO PSA OUR

点评:与上一个方法类似,此方法也要求第三方在可控可管理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容