使用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)协议默认阻止第三方无隐私安全声明的cookie,Firefox目前还不支持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
???????????????????????????????????????????????????????????????????????????????????