HTML DOM DOCUMENT 对象

定义和用法

domain 属性可返回下载当前文档的服务器域名。

语法

document.domain

说明

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

提示和注释

提示:domain 属性可以解决因同源安全策略带来的不同文档的属性共享问题。

  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";

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

document.domain的更多相关文章

  1. Both must set "document.domain" to the same value to allow access.

    有两个域名指向我的网站,其中一个域名访问我的网站的话就可以看到日期控件 另一个域名访问我的网站不能看到日期控件, 在EF中使用日期控件,浏览器审查元素后看到,报这个错误“Both must set & ...

  2. document.domain - JavaScript的同源策略问题:错误信息:Permission denied to access property 'document'_eecc00_百度空间

    document.domain - JavaScript的同源策略问题:错误信息:Permission denied to access property 'document'_eecc00_百度空间 ...

  3. document.domain与js跨域的问题

    以前如果要使iframe里面的脚本能访问parent的内容,但iframe和parent的二级域名相同,那一般都会在两者都写上document.domain="xxx.com" 以 ...

  4. document.domain跨域

    原文:[转载]document.domain跨域 document.domain 用来得到当前网页的域名. 比如在地址栏里输入: javascript:alert(document.domain); ...

  5. document.domain的修改问题

    有时候,需要修改document.domain. 典型的情形:http://a.xxx.com/A.htm 的主页面有一个<iframe src="http://b.xxx.com/B ...

  6. 修改document.domain的注意事项(转)

    有时候,需要修改document.domain. 典型的情形:http://a.xxx.com/A.htm 的主页面有一个<iframe src="http://b.xxx.com/B ...

  7. 跨域cors方法(jsonp,document.domain,document.name)及iframe性质

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...

  8. 跨域问题实践总结! 上(JSONP/document.domain/window.name)

    1. JSONP 首先要介绍的跨域方法必然是 JSONP. 现在你想要获取其他网站上的 JavaScript 脚本,你非常高兴的使用 XMLHttpRequest 对象来获取.但是浏览器一点儿也不配合 ...

  9. js设置document.domain实现跨域

    document.domain 只能实现跨子域的问题 如:xxx.com/a.html 和aaa.xxx.com/b.html 或:bbb,xxx.com/c.html 和ccc.xxx.com/d. ...

随机推荐

  1. 便于开发的Helper类

    一.将config封装实体层: 例子config: <?xml version="1.0" encoding="utf-8" ?> <Sett ...

  2. iOS 获取设备唯一标示符的方法

    在开发中会遇到应用需要记录设备标示,即使应用卸载后再安装也可重新识别的情况,在这写一种实现方式--读取设备的UUID(Universally Unique Identifier)并通过KeyChain ...

  3. Android无需申请权限拨打电话

    Android打电话有两种实现方法: 第一种方法,拨打电话跳转到拨号界面.源代码如下: Intent intent = new Intent(Intent.ACTION_DIAL); Uri data ...

  4. IOS开发基础知识--碎片50

      1:Masonry 2个或2个以上的控件等间隔排序 /** * 多个控件固定间隔的等间隔排列,变化的是控件的长度或者宽度值 * * @param axisType 轴线方向 * @param fi ...

  5. js继承方式

    1.原型链 实现的本质是重写原型对象,代之以一个新类型的实例: 给原型添加方法的代码硬顶放在替换原型的语句之后: 不能使用对象字面量查收能见原型方法,这样会重写原型链. 缺点:包含引用类型值的原型属性 ...

  6. SQLite学习笔记(十二)&&虚拟机指令

    上篇文章简单讨论了虚拟机的原理,这篇文章我们详细讨论下指令,具体从几种典型的SQL语句来看看每种SQL对应的指令流,以及每个指令的含义.通过explain语句,可以看到语句对应的指令流:通过pragm ...

  7. Apache启动错误解决方法

    xampp启动时显示的错误为: 10:40:18 [Apache] Error: Apache shutdown unexpectedly.10:40:18 [Apache] This may be ...

  8. python-pickle模块使用实例

    以下代码主要实现的是用户登录,注册,密码验证,账户锁定,重置和修改密码等功能 import pickle #第一次运行请去掉下面一段代码的注释 ''' users_db = open("us ...

  9. xshell不能输入中文,显示为??

    不知不觉间发现自己使用xshell的时候不能输入中文了,输入的中文会变成"??",开始以为是编码问题,看了一下编码设置后发现没有任何问题,而且显示中文没有出现乱码问题,只是在输入的 ...

  10. 深入分析JS原型链以及为什么不能在原型链上使用对象

    在刚刚接触JS原型链的时候都会接触到一个熟悉的名词:prototype:如果你曾经深入过prototype,你会接触到另一个名词:__proto__(注意:两边各有两条下划线,不是一条).以下将会围绕 ...