前端复习--window.name跨域完全搞定

来源:互联网 发布:天猫数据采集 编辑:程序博客网 时间:2024/05/29 12:36

之前就搞得半懂不懂的,主要是懒得动手,导致这么慢搞定这个知识点;

今天从俊伯那里回来的路上,再次去研究了这个问题,有两篇文章使我茅塞大开!

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跨域请求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的认识必须深入才行!

0 0
原创粉丝点击