JS设置document.domain完成跨域
@(StuRep)
document.domain
用来获得当前网页的域名。
比方在地址栏里输入:
代码以下:
javascript:alert(document.domain); //www.jb51.net
我们也能够给document.domain属性赋值,不过是有限定的,你只能赋成当前的域名或许基本域名。
比方:
代码以下:
javascript:alert(document.domain = "jb51.net"); //jb51.net
javascript:alert(document.domain = "www.jb51.net"); //www.jb51.net
上面的赋值都是胜利的,由于www.jb51.net是当前的域名,而jb51.net是基本域名。
然则下面的赋值就会出来”参数无效”的毛病:
代码以下:
javascript:alert(document.domain = "cctv.net"); //参数无效
javascript:alert(document.domain = "www.jb51.net"); //参数无效
由于cctv.net与www.jb51.net不是当前的域名也不是当前域名的基本域名,所以会有毛病涌现。这是为了防备有人歹意修正document.domain来完成跨域盗取数据。
应用document.domain 完成跨域:
前提条件:这两个域名必需属于统一个基本域名!而且所用的协定,端口都要一致,不然没法应用document.domain举行跨域.
Javascript出于对安全性的斟酌,而制止两个或许多个差别域的页面举行互相操纵。
雷同域的页面在互相操纵的时刻不会有任何题目。
比方在:aaa.com的一个网页(a.html)内里 应用iframe引入了一个bbb.com里的一个网页(b.html)。
这时候在a.html内里能够看到b.html里的内容,然则却不能应用javascript来操纵它。由于这两个页面属于差别的域,在操纵之前,js会检测两个页面的域是不是相称,假如相称,就许可其操纵,假如不相称,就会谢绝操纵。
这里不可能把a.html与b.html应用JS改成统一个域的。由于它们的基本域名不相称。(强迫用JS将它们改成相称的域的话会报跟上面一样的”参数无效毛病。”)
所以假如在a.html里引入aaa.com里的另一个网页,是不会有这个题目的,由于域相称。
有另一种状况,两个子域名:
aaa.xxx.com
bbb.xxx.com
aaa里的一个网页(a.html)引入了bbb 里的一个网页(b.html),
这时候a.html里同样是不能操纵b.html内里的内容的。
由于document.domain不一样,一个是aaa.xxx.com,另一个是bbb.xxx.com。
这时候我们就能够经由过程Javascript,将两个页面的domain改成一样的,
需要在a.html里与b.html里都到场:
代码以下:
document.domain = "xxx.com";
如许这两个页面就能够互相操纵了。也就是完成了统一基本域名之间的”跨域”。