`
webcode
  • 浏览: 5945588 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

document.domain解决跨域问题

 
阅读更多

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

alert(document.domain); //www.example.com

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

alert(document.domain = "example.com"); //example.com

alert(document.domain = "www.example.com"); //www.example.com
上面的赋值都是成功的,因为www.example.com是当前的域名,而example.com是基础域名。但是下面的赋值就会出来"参数无效"的错误:

alert(document.domain = "cctv.net"); //参数无效

alert(document.domain = "ttt.example.com"); //参数无效
因为cctv.netttt.example.com不是当前的域名也不是当前域名的基础域名,所以会有错误出现。这是为了防止有人恶意修改document.domain来实现跨域偷取数据。

利用document.domain 实现跨域:
前提条件:这两个域名必须属于同一个基础域名!而且所用的协议,端口都要一致,否则无法利用document.domain进行跨域

Javascript出于对安全性的考虑,而禁止两个或者多个不同域的页面进行互相操作。相同域的页面在相互操作的时候不会有任何问题。比如在:aaa.com的一个网页(a.html)里面 利用iframe引入了一个bbb.com里的一个网页(b.html)。

这时在a.html里面可以看到b.html里的内容,但是却不能利用javascript来操作它。因为这两个页面属于不同的域,在操作之前,js会检测两个页面的域是否相等,如果相等,就允许其操作,如果不相等,就会拒绝操作。

这里不可能把a.htmlb.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实现跨域的注意点分析

    本文实例分析了js设置document.domain实现跨域的注意点。分享给大家供大家参考。具体分析如下: document.domain 用来得到当前网页的域名。 比如在地址栏里输入: 代码如下:[removed]alert(document.domain&#41...

    showModalDialog open弹出子窗口操作parent、opener父窗口及跨域处理

    3> IE与FireFox对两个弹出窗口在跨域时的解析也有不同:通过window.dialogArguments操作父窗口时,在IE下不需要指定document.domain而在FireFox下则正好相反需要指定才能生效;采用opener方式操作父窗口时都不需要...

    javaweb 开发解决跨域问题的N种方法

    解决跨域问题 设置document.domain一级域名相同的情况之下) document.domain= html标签中src属性,只支持get请求,允许跨域 jsonp格式eval jsonp格式eval ifram之间交互,window.posMessage方法发送内容应(但是...

    前端常见跨域解决方案(全).mht

    2、 document.domain + iframe跨域 3、 location.hash + iframe 4、 window.name + iframe跨域 5、 postMessage跨域 6、 跨域资源共享(CORS) 7、 nginx代理跨域 8、 nodejs中间件代理跨域 9、 WebSocket...

    Ajax跨域传输参数

    可以将book.aa.com用iframe添加到 www.aa.com的某个页面下,在www.aa.com和iframe里面都加上document.domain = "aa.com",这样就可以统一域了,可以实现跨域访问。就和平时同一个域中镶嵌iframe一样,直接调用里面的...

    详解js跨域请求的两种方式,支持post请求

    context: document.body, success: function(data) { console.log(data); } }); 这个调用实际上的实现原理是 在网页中构造一个script标签,将src设置为对应的url,并增加上相应的callback参数,形如

    cross-origin::cyclone: 跨域demo。CORS、JSONP、postMessage、websocket、document.domain、window.name、iframe等示例

    跨域demo集一个关于跨域的简单demo集合,适合入门学习跨域的。任何对初学者学习跨域有用的PR都会接受,谢谢!原理用node的web框架express在3000端口和3001端口分别开启一个静态服务器,在两个端口间进行跨域传输数据...

    javascript跨域方法、原理以及出现问题解决方法(详解)

    基于iframe实现的跨域要求两个域具有aa.xx.com,bb.xx.com这种特点,也就是两个页面必须属于一个基础域(例如都是xxx.com,或是xxx.com.cn),使用同一协议(例如都是 http)和同一端口(例如都是80),这样在两个...

    「JavaScript」JS四种跨域方式详解

    二、通过修改document.domain来跨子域 浏览器都有一个同源策略,其限制之一就是第一种方法中我们说的不能通过ajax的方法去请求不同源中的文档。 它的第二个限制是浏览器中不同域的框架之间是不能进行js的交互操作的...

    JavaScript使用HTML5的window.postMessage实现跨域通信例子

    当然解决方案也有很多: 1.document.domain+iframe的设置,应用于主域相同而子域不同; 2.利用iframe和location.hash,数据直接暴露在了url中,数据容量和类型都有限 3.Flash LocalConnection, 对象可在一个 SWF ...

    使用HTML5中postMessage知识点解决Ajax中POST跨域问题

    (1) document.domain+iframe; (2) 动态创建script; (3) iframe+location.hash; (4) flash。 postMessage是HTML5为解决js跨域问题而引入的新的API,允许多个iframe/window跨域通信。 HTML5中提供了在网页文档...

    js实现跨域访问的三种方法

    基于iframe实现的跨域要求两个域具有aa.xx.com,bb.xx.com这种特点,也就是两个页面必须属于一个基础域(例如都是xxx.com,或是xxx.com.cn),使用同一协议(例如都是 http)和同一端口(例如都是80),这样在两个...

    AJAXCDR:利用 Flash 完美解决 JavaScript 和 AJAX 跨域 HTTP POST/GET 表单请求

     本域和子域的交互,可以通过iframe设置两个域名document.domain = "s135.com",实现统一s135.com域下的跨域访问。  本域和其他域的交互,可以通过iframe、代理、JS创建动态脚本等几种方法来实现,这里有篇文章对...

    Webkit的跨域安全问题说明

    父页面代码: 代码如下: [removed] document.domain = “nunumick.me”; function doTest(){ alert(‘hello world’); } [removed] <iframe src=”http://www.nunumick.me/lab/x-domain/webkit-test.html...

    HTML5中使用postMessage实现Ajax跨域请求的方法

    由于同源策略的限制,Javascript存在跨域通信的问题,典型的跨域问题有iframe与父级的通信等。 常规的几种解决方法: (1) document.domain+iframe;(2) 动态创建script; (3) iframe+location.hash; (4) flash。 ...

    ajax跨域(基础域名相同)表单提交的方法

    document.domain=基础域名; [removed] 2.ajax表单提交表单时可以使用一个jquery的一个表单插件jquery.form.js 使用语法如下: //fromPost为要收集数据的form表单的id $(#formPost).ajaxSubmit({ url:跨域的业务...

    js实现跨域的几种方法汇总(图片ping、JSONP和CORS)

    虽然有同源策略的存在,但是在js中跨域也依然很常见,有document.domain、window.name、图片ping、jsonp、CORS,在这里简单总结下图片ping、jsonp和CORS备忘。 图片ping 图片可以从任何URL中加载,所以将img的src...

    cross-domain-events:类似事件的 api,用于 postMessage 在跨域框架之间发送对象

    跨域事件用于跨域通信的 postMessage 类事件接口。 postMessage 在 Internet Explorer 8 中实现,但仅支持发送文本字符串。 现代浏览器可以发送对象,但如果您想监听不同类型的对象,您必须实现自己的委托。例子 // ...

Global site tag (gtag.js) - Google Analytics