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

使用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