在介绍document.domain跨域前,先铺垫点前言知识
主域和子域的区分?
主域名:由两个或两个以上的字母构成,中间用点号隔开,这个域名只有一个点号
比如:baidu.com
子域名:是在主域之下的域名,域名内容后有2个或更多个点号
比如:www.baidu.com / zhidao.baidu.com
document.domain?
目前我的理解:document.domain代表的是提供document这个文档的域名,DOM标准规定该值是只读的。
但是许多浏览器包括火狐都允许它设置为当前域名的父域名,且主域必须要相同。(当然可以设置为自身)
例如:a.b.example.com中某个文档的document.domain 可以设成a.b.example.com、b.example.com 、example.com中的任意一个,但是不可以设成 c.a.b.example.com,因为这是当前域的子域,也不可以设成baidu.com,因为主域已经不相同了。
通过修改document.domain来跨子域
我们在http://www.example.com/a.html页面通过iframe嵌入http://example.com/b.html后,虽然我们可以通过iframe.contentWindow来获得b.html的window,但是由于同源策略的存在,我们无法使用获取到的window的属性和方法,因为同源策略限制的是ajax的请求操作和js的交互操作
若此时我们 将两个页面的document.domain都设置为相同的域名,比如都设置为example.com可以获得b.html页面window上的属性和方法,并且进行一些其他跨域操作了
但是由于document.domain的修改是有限制的,只能设置为自身或者更高一级的域名,且主域要相同,所以进而这就限制了该方法使用的范围,即仅仅父域和子域,子域和子域之间才能使用该方法进行跨域操作
操作如下
http://www.example.com/a.html页面