document.domain
用来得到当前网页的域名。
比如在地址栏里输入:
javascript:alert(document.domain); //www.forjj.com
我们也可以给document.domain属性赋值,不过是有限制的,你只能赋成当前的域名或者基础域名。
比如:
javascript:alert(document.domain = "forjj.com"); //forjj.com
javascript:alert(document.domain = "www.forjj.com"); //www.forjj.com
上面的赋值都是成功的,因为www.forjj.com是当前的域名,而forjj.com是基础域名。
但是下面的赋值就会出来“参数无效”的错误:
javascript:alert(document.domain = "cctv.net"); //参数无效
javascript:alert(document.domain = "ttt.forjj.com"); //参数无效
因为cctv.net与ttt.forjj.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";
这样这两个页面就可以互相操作了。也就是实现了同一基础域名之间的“跨域”。
分享到:
相关推荐
本文实例分析了js设置document.domain实现跨域的注意点。分享给大家供大家参考。具体分析如下: document.domain 用来得到当前网页的域名。 比如在地址栏里输入: 代码如下:[removed]alert(document.domain)...
然而,有时候为了实现特定功能,如单点登录(SSO)或资源共享,开发者会利用`document.domain`属性来打破这种限制,允许跨子域的通信。本节主要探讨的是如何利用`document.domain`技巧进行跨子域操作,并结合一个...
然而,对于主域相同但子域不同的情况,可以通过设置`document.domain`属性来实现跨子域通信。本文将深入探讨PHP AJAX跨子域的解决方案,特别是使用`document.domain`配合`iframe`的实例分析。 首先,理解`document....
在某些情况下,开发者可能需要在父页面中设置`document.domain`属性,例如当父页面和子页面(iframe)属于同一顶级域名但二级域名不同时,设置`document.domain`可以使它们视为同源。然而,当父页面显式设置了`...
document.domain = 'domain.com'; ``` 在子窗口中也需要设置 document.domain: ``` document.domain = 'domain.com'; ``` 这样,我们就可以实现跨域请求。 跨域是前端开发中的一大难题,但我们可以通过各种...
- `document.domain`:返回当前文档的域名,用于跨子域通信。 - `document.lastModified`:显示文档最后修改的时间。 2. **Document对象的常用方法** - `document.createElement()`:创建一个新的HTML元素。 - ...
3> IE与FireFox对两个弹出窗口在跨域时的解析也有不同:通过window.dialogArguments操作父窗口时,在IE下不需要指定document.domain而在FireFox下则正好相反需要指定才能生效;采用opener方式操作父窗口时都不需要...
修改`document.domain`来跨子域 **1. 基于iframe实现跨域** 这种方法适用于两个页面的域具有共同的基础域,例如aa.xx.com和bb.xx.com。它们必须使用相同的协议(如http或https)和端口(如80或443)。在两个页面...
在早期的浏览器中,document.open()还有一种用途,即当document.domain被设置为一个新的域名,但又没有得到父域的授权时,会使用document.open()来打开页面的输出,以便继续通信。但现在这种方式不再被推荐使用,...
实际上,还有其他的技巧和方法可以尝试,比如使用JavaScript设置document.domain属性或者服务器端进行HTTP头信息的控制等。这些技术的实现和应用需要结合具体的业务场景和技术需求进行详细的研究。
document.domain = "domain.com"; var iframe = document.getElementById('iframe'); iframe.onload = function() { var iframeDoc = iframe.contentDocument || iframe.contentWindow.document; if (iframeDoc...
2. **`document.domain`**:用于获取或设置当前文档的域名,通常用于跨子域通信。 3. **`document.title`**:获取或设置页面的标题,对应于`<title>`标签的内容。 4. **`document.documentElement`**:返回文档的根...
但是,通过 document.domain 属性可以读取或修改源,但是有限制,修改之后的源不能通过其他脚本再次修改。 document.domain document.domain 属性可以解决因同源安全策略带来的不同文档的属性共享问题。例如,...
当两个页面的主域相同但子域不同时,可以通过设置`document.domain`来实现跨域访问。例如,在`www.a.com/a.html`页面中,可以通过以下方式设置`document.domain`并与`www.script.a.com/b.html`进行通信: ```...
SSH(Struts-Spring-Hibernate)技术框架是Java Web开发中广泛使用的一个开源框架,它结合了Struts、Spring和Hibernate三个流行的开源框架,以实现MVC模式。在这个文档中,将介绍使用SSH进行Java Web工程开发的详细...
修改`document.domain`适用于同一主域名下的跨子域通信;`window.name`适合页面跳转或`<iframe>`场景;`window.postMessage`则提供了一种安全可控的跨域通信方式,尤其适用于HTML5应用。根据实际需求选择合适的方法...
当两个页面处于同一主域但不同子域时,可以通过设置`document.domain`来实现跨域通信。例如,`http://www.example.com/a.html`和`http://example.com/b.html`可以通过将`document.domain`都设置为`example.com`来...