之前就搞得半懂不懂的,主要是懒得动手,导致这么慢搞定这个知识点;
今天从俊伯那里回来的路上,再次去研究了这个问题,有两篇文章使我茅塞大开!
1 http://www.codes51.com/article/detail_119800.html
这篇文章文章首先抛出一个重磅炸弹:window.name跨域的基础是:iframe页面在其url改变的时候,不会改变name的数据,
从而通过proxy页面(与应用页面相同域名)的跳转,绕过跨域的限制。
2 http://www.cnblogs.com/rainman/archive/2011/02/21/1960044.html
则用实现了上面提到的window.name跨域的“基础”。
我理解的跨域:
有三个页面:
- a.com/app.html:应用页面。
- a.com/proxy.html:代理文件,一般是一个没有任何内容的html文件,需要和应用页面在同一域下。
- b.com/data.html:应用页面需要获取数据的页面,可称为数据页面。
首先在a.com/app.html简历一个frame,frame的src属性指向b.com/data.html;
b.com/data.html的window.name="跨域传递的信息";
这时我们使用了一个很卑鄙的手段:卸磨杀驴。具体是这么干的:此时a.com/app.html中的frame指向b.com/data.html,其window.name里放着我们想要的跨域的数据,但是由于frame与a.com/app.html不是同一个域,不能相互访问。而这时,有人告诉我们,改掉frame的src属性指向一个a.com域名下任意一个页面(通常是个空页面,我们成为proxy代理),这样frame就和a.com同域了,信息可以相互访问,而且window.name里放的东西不受影响!window.name跨域的东西,与frame的深入理解相关,同时,document.domain的跨域也与frame有关,frame的认识必须深入才行!