当前位置: 代码迷 >> Web前端 >> 使用frame框架解决部分跨域访问有关问题思路
  详细解决方案

使用frame框架解决部分跨域访问有关问题思路

热度:136   发布时间:2012-08-24 10:00:21.0
使用frame框架解决部分跨域访问问题思路

使用frame框架解决部分跨域访问问题思路

?

a. ?iframe、frameSet、ifame使用及解决部分跨域访问问题

?

应用场景:???

???1> ?一个jsp页面中, 嵌套调用了一层ifame;

?? 2>? 而这ifame中内嵌的页面,其实对应了一个frameSet, 此frameSet被分割上下两部分: topFrame、 mainFrame

?

那问题来了:

???????? 若在当前页面显示,调用mainFrame中效果:比如显示多级菜单等,就会涉及到跨域访问问题,(top.mainFrame.location.href=XXXX) 等就不能直接做使用了,但是解决的思路也很简单,就是?

???

 top = parent; 

?

?

?? ??基本就可以解决问题了!

?

原因在于,在C/S编程的系统中,可能会有经常使用到类似这种需求,其实就是windows对象下top、parent、self、blank使用不是很清楚。

?

b.? top、parent、self、blank应用场景

?

? 1>? top:? 整个浏览器窗口;

? 2>? parent: 对应父级窗口;

? 3>? self: 本窗口;

? 4>? blank: 新窗口。

?

针对前面的应用场景,其实就是三层的框架嵌套,这里简单解释一下:

?

?? i>?? 若只是一个页面,则 top = parent = self;

? ii>???frame嵌套的两层页面,则 top = parent?--> self (这里具体看是哪一层,若是第二层,则包含关系; 若第一层,则同i);

?iii>???针对上面的应用场景,则是三层嵌套的,则 top --> parent --> self(具体看要使用哪一层了)。??

?

c.???解决view页面中跨域访问内嵌页面域值问题

??

?? ?一个可行的方式,是使用给内嵌的frame设置id,然后根据id一路去取,从外到里 或 从里到外 这么来取,还是可行的。

?

d.?? 跨域访问,解决session丢失的问题

?

????? 问题根源:?
????? IE6/IE7
支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookieFirefox目前还不支持P3P安全特性,firefox中自然也不存在此问题了。Mircosoft对此的具体描述可以参见
Privacy in Internet Explorer 6.

?

????? 解决办法是在要嵌入的内容中(iframe指向的站点)输出P3P的主机头声明:

???? ?jsp:?

???

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

?

??

?

?

?

?

thanks!

?

?

?

???????????????????????????????????????????????????????????????????????Author: liguohu09@gmail.com

?????????????????????????????????????????????????????????????????????? ?? Date:?2012-02-07

???????????????????????????????????????????????????????????????????????????????????

  相关解决方案