javascript跨域之document.domain

版权声明:本文为博主原创文章,未经博主允许不得转载。

 

前言

前面我们说了jsonp的跨域,今天我们来讲一下document.domain跨域。

说明

domain 属性是一个只读的字符串,包含了载入当前文档的 web 服务器的主机名。

定义

domain 属性可返回下载当前文档的服务器域名,可以解决因同源安全策略带来的不同文档的属性共享问题。

实例

1
alert(document.domain) //midaoi.com

图示:
效果图

正文

相信大家已经简单的了解了domain属性了,该属性不光可以获取域名,还可以进行赋值,但是你只能赋成当前的域名或者基础域名。例如我的只能是document.domain = "www.midaoi.com"或者document.domain = "midaoi.com",如果像这样document.domain = "www.baidu.com",浏览器就会抛出一个错误Failed to set the 'domain' property on 'Document': 'www.baidu.com' is not a suffix of 'midaoi.com'.,这样是为了防止恶意修改domain来偷取数据,或者进行攻击。

domain跨域

domain跨域需要这两个域名必须属于同一个基础域名!而且所用的协议,端口都要一致,否则无法利用document.domain进行跨域。

现在有两个子域名(顶级域名(一级域名)的下一级):
aaa.qq.com
bbb.qq.com

aaa用iframe引入了bbb页面,这时aaa不能操作bbb页面,下面我们就可以通过修改domain进行跨域了。
代码如下:

1
document.domain = "qq.com";

当然我们需要在两个页面都加上这段代码才可以。

总结

domain跨域需要这两个域名必须属于同一个基础域名!而且所用的协议,端口都要一致,否则无法利用document.domain进行跨域,domain跨域需要两个文件都修改domain属性。