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. ES6之const命令

    一直以来以ecma为核心的js始终没有常量的概念,es6则弥补了这一个缺陷: const foo='foo'; foo='bar';//TypeError: Assignment to constan ...

  2. android Service介绍

    一.简介 android中service(服务)运行于后台,没有界面.和其他组件一样,service也运行在主线程中,因此不能用它来做耗时的请求或者动作.可以在服务中开启线程,在线程中做耗时操作.可以 ...

  3. 纯js实现10分钟倒计时

    一个简单实现倒计时的小栗子~ 效果图:简陋的不能再简陋了,捂脸 代码: <!DOCTYPE HTML> <html> <head> <title> 倒计 ...

  4. PHP相关笔记

    扩展包(相关链接):https://packagist.org/: 插件postman主要应用于web开发时get.post请求时查看其响应:

  5. Hive-0.x.x - Enviornment Setup

    All Hadoop sub-projects such as Hive, Pig, and HBase support Linux operating system. Therefore, you ...

  6. redis 缓存技术与memcache的区别

    1 什么是redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset( ...

  7. 《明解c语言》已看完,练习代码此奉上

    2016年9月20日至2016年11月12日,从学校图书馆借来的<明解c语言>看完了. 大三第一个学期,前8周,有c语言程序设计的课.课本是学校里的老师编写出版的,为了压缩空间,减少页面, ...

  8. POJ 2398 Toy Storage(计算几何)

    题意:给定一个如上的长方形箱子,中间有n条线段,将其分为n+1个区域,给定m个玩具的坐标,统计每个区域中的玩具个数. 题解:通过斜率判断一个点是否在两条线段之间. /** 通过斜率比较点是否在两线段之 ...

  9. 00 Cadence学习总目录

    这个系列是我学习于博士CADENCE视频教程60讲时,一边学一边记的笔记.使用的CADENCE16.6. 01-03课 了解软件 创建工程 创建元件库 分裂元件的制作方法 04课 正确使用hetero ...

  10. python2.7高级编程 笔记二(Python中的描述符)

    Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装饰器(decorator).对于大部分特性来说,这些" ...