document.domain跨域

原文:[转载]document.domain跨域

document.domain

用来得到当前网页的域名。
比如在地址栏里输入:

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

我们也可以给document.domain属性赋值,不过是有限制的,你只能赋成当前的域名或者基础域名。
比如:
javascript:alert(document.domain = "315ta.com"); //315ta.com
javascript:alert(document.domain = "www.315ta.com");//www.315ta.com

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

但是下面的赋值就会出来"参数无效"的错误:
javascript:alert(document.domain = "cctv.net"); //参数无效
javascript:alert(document.domain = "ttt.315ta.com"); //参数无效

因为cctv.net与ttt.315tas.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";

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

时间: 2025-01-19 19:14:49

document.domain跨域的相关文章

前端跨域整理

前言 原文地址:前端跨域总结 博主博客地址:Damonare的个人博客 相信每一个前端er对于跨域这两个字都不会陌生,在实际项目中应用也是比较多的.但跨域方法的多种多样实在让人目不暇接.老规矩,碰到这种情况,就只能自己总结一篇博客,作为记录. 正文 1. 什么是跨域? 跨域一词从字面意思看,就是跨域名嘛,但实际上跨域的范围绝对不止那么狭隘.具体概念如下:只要协议.域名.端口有任何一个不同,都被当作是不同的域.之所以会产生跨域这个问题呢,其实也很容易想明白,要是随便引用外部文件,不同标签下的页面引

AJAX javascript的跨域访问执行_AJAX相关

突然感觉就是这里的问题,研究一下,搞定后其实觉得挺容易的,只是自己知识还是有些欠缺,解决方法如下: 阻塞的AJAX请求 我们先来证实一下请求的阻塞情况吧.我们使用如下的代码:  连续发起三个请求  复制代码 代码如下: function simpleRequest()  {     var request = new XMLHttpRequest();      request.open("POST", "Script.ashx");      request.se

AJAX javascript的跨域访问执行

突然感觉就是这里的问题,研究一下,搞定后其实觉得挺容易的,只是自己知识还是有些欠缺,解决方法如下: 阻塞的AJAX请求 我们先来证实一下请求的阻塞情况吧.我们使用如下的代码: 连续发起三个请求  复制代码 代码如下: function simpleRequest()  {     var request = new XMLHttpRequest();      request.open("POST", "Script.ashx");      request.sen

wcf rest ajax post 提交的不能跨域

问题描述 wcf rest ajax post 提交的不能跨域 今天调试代码的时候发现一个跨域问题,在IE上运行正确,但是在Chrome和Firefox上提示"Error"错误是 所用的 getPreventDefault() 已不赞成使用.请使用 defaultPrevented 替代. jquery.js:5375:0已阻止跨源请求:同源策略禁止读取位于 http://192.168.1.105:3721/OrderServices/ 的远程资源.(原因:来自 CORS 预检通道的

js设置document.domain实现跨域的注意点分析

  本文实例分析了js设置document.domain实现跨域的注意点.分享给大家供大家参考.具体分析如下: document.domain 用来得到当前网页的域名. 比如在地址栏里输入: 代码如下: javascript:alert(document.domain); //www.jb51.net 我们也可以给document.domain属性赋值,不过是有限制的,你只能赋成当前的域名或者基础域名. 比如: 代码如下: javascript:alert(document.domain = "

js设置document.domain实现跨域的注意点分析_javascript技巧

本文实例分析了js设置document.domain实现跨域的注意点.分享给大家供大家参考.具体分析如下: document.domain 用来得到当前网页的域名. 比如在地址栏里输入: 复制代码 代码如下: javascript:alert(document.domain); //www.jb51.net 我们也可以给document.domain属性赋值,不过是有限制的,你只能赋成当前的域名或者基础域名. 比如: 复制代码 代码如下: javascript:alert(document.do

跨域访问cookie时domain到底要怎么设置

问题描述 (asp.net2.0)本机作为服务器,有两个站点a和b,本机名为mc想跨域访问cookie,其domain到底要怎么设置才行我试了.domain='mc',.domain='local'等都不行网上说的什么二级域名,都是什么www或者什么com的,我这里都用不上的望大家帮忙一下,谢谢 解决方案 解决方案二: 解决方案三: 解决方案四:上面两位贴的文章还是没有说在我本机服务器中的两个站点domian怎么设置,还是说什么什么www什么com我是本机,没有这些的解决方案五:up解决方案六:

利用JSONP实现跨域请求

前言:有时候一忙起来就没了时间观念,原来我已经有十多天没写博客了.一直想做跨域方面的尝试,无奈最近准备校招没时间动动手.今天就先讲讲JSONP吧,昨晚还在研究QQ空间日志里面网络图片的问题呢,我发现日志还提供了HTML模式,我们可以利用img标签的src属性实现跨域请求,从自己的服务器里提取动态内容. JSONP 在讲实现之前,我们先来看看何为JSONP.以下是维基百科的解释: JSONP or "JSON with padding" is a communication techni

js中各种跨域问题实战小结

什么是跨域?为什么要实现跨域呢? 这是因为JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.也就是说只能访问同一个域中的资源.我觉得这就有必要了解下javascript中的同源策略是怎么回事了:javascript的同源策略 于是当我们想某些特定的功能的时候,实现合理的跨域请求就显得比较重要了. -->1.原生Ajax对象xhr的跨域 -->2.简单jsonp -->3.图像Ping -->4.document.domain+iframe实现跨域 javascr