document.domain用来得到当前网页的域名。
比如打开百度,在地址栏里输入:

javascript:alert(document.domain); //www.baidu.com

弹出窗体:

我们也可以给document.domain属性赋值,不过是有限制的,你只能赋成当前的域名或者基础域名。比如:

javascript:alert(document.domain = "baidu.com"); //baidu.com
javascript:alert(document.domain = "www.baidu.com");//www.baidu.com

上面的赋值都是成功的,因为www.baidu.com是当前的域名,而baidu.com是基础域名。

但是下面的赋值就会出来"参数无效"的错误:

javascript:alert(document.domain = "cctv.net"); //参数无效
javascript:alert(document.domain = "blog.knownsec.com"); //参数无效

因为cctv.net与blog.knownsec.com不是当前的域名也不是当前域名的基础域名,所以会有错误出现。这是为了防止有人恶意修改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";

这样这两个页面就可以互相操作了。也就是实现了同一基础域名之间的"跨域"。

最新文章

  1. Dijkstra算法优先队列实现与Bellman_Ford队列实现的理解
  2. 解决 uuid.h找不到的问题
  3. JavaScript 获取数组中最大值、最小值
  4. code标签和pre标签
  5. js 关于日期
  6. corresponding SQLSTATE values general error
  7. LightOJ 1074 Extended Traffic SPFA 消负环
  8. Java分布式处理技术(RMI,JDNI)
  9. Django之模板语言
  10. 使用json常用到的包有以下六个
  11. Python 提取Twitter转发推文的元素(比方username)
  12. day 16 - 1 内置函数(二)
  13. netbeans10支持php7.1-7.3
  14. Luogu P4053 [JSOI2007]建筑抢修
  15. 实验吧—Web——WP之 简单的sql注入之2
  16. php大流量高并发解决方案
  17. Cookie常用的优化方式
  18. Spring(七):IOC&DI
  19. Android Studio添加so文件并打包到APK的lib文件夹中
  20. linux常用命令:which 命令

热门文章

  1. Android4.4中jni的native的方法无法找到的解决方案
  2. 《ECMAScript6标准入门》第三版--读书笔记
  3. SQL SERVER 2012/ 2014 分页,用 OFFSET,FETCH NEXT改写ROW_NUMBER的用法(转)
  4. Sql Server Tempdb原理-日志机制解析实践
  5. Java 如何启用 ARM 虚拟机诊断
  6. USB 相关笔记
  7. android打开存储卡(TF卡\SD卡)中的sqlite文件
  8. 在TortoiseSVN使用clean up
  9. Coursera-AndrewNg(吴恩达)机器学习笔记——第三周编程作业(逻辑回归)
  10. Skype 服务器客户端策略参数优化