`
wezly
  • 浏览: 487365 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

使用document.domain跨域实例

阅读更多

 

      Ajax跨域一直是个比较麻烦的问题,例如:断桥残雪在一个项目中使用了open打开一个跟父窗口不同域名的新页面,结果子窗口就不能传值给父窗口了;再如:我在www.2fool.cn下不可以获取love.2fool.cn域名下的页面内容。浏览器的跨域限制是为了安全,可是当我们想要在一个域名下请求另外一个域名的内容的时候就感觉不那么爽了。

我在WordPress天气插件滔滔API接口处理上都使用了JSONP的方法来实现的跨域。而今天我要通过使用JS的document.domain和iframe来解决Ajax跨子域的问题

 

原理: 通过给主页面跟请求页面设置相同的document.domain来,欺骗浏览器,达到Ajax跨子域的效果,此方法在IE,chrome,Firefox,Safari,Opera下测试通过。

缺点:无法实现不同主域名之间的通讯。并且当在一个页面中还包含有其它的iframe时,会产生安全性异常,拒绝访问。

  

   首先我们假设主页面地址为:http://www.js8.in/mywork/crossdomain/index.html,我们要加载的内容是位于work.2fool.cn域名下的helloworld.txt。我们需要在主页面中设置document.domain为2fool.cn,然后主页面添加一个iframe,src为域名work.2fool.cn下的一个url,在iframe页面中同样设置document.domain为2fool.cn,同时iframe中需要添加Ajax的函数,例如引入jQuery.js。

主页index.html的主要代码如下:

<button onclick="crossDomain();">开始跨域</button>
<div id="ajax"></div>
<iframe src="http://work.2fool.cn/crossdomain/iframe.html" id="iframe" style="display:none;">
</iframe>
<script type="text/javascript">
document.domain = '2fool.cn';
function crossDomain(){
    var iframe=document.getElementById('iframe').contentWindow.$;        
    iframe.get("http://work.2fool.cn/crossdomain/helloworld.txt",function(data){
        document.getElementById("ajax").innerHTML=data;
    });
}
</script>

 

iframe页面主要代码如下:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
document.domain = '2fool.cn';
</script>

 

分享到:
评论

相关推荐

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

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

    PHP ajax跨子域的解决方案之document.domain+iframe实例分析

    本文将深入探讨PHP AJAX跨子域的解决方案,特别是使用`document.domain`配合`iframe`的实例分析。 首先,理解`document.domain`的原理。它是JavaScript中的一个属性,允许我们修改当前文档的域,只要新设置的域是...

    解决跨域问题方案实例

    5. document.domain:当两个页面的顶级域名相同,但子域名不同的情况,可以通过设置`document.domain`使它们视为同源,但这仅限于同一顶级域名下的跨子域。 在提供的压缩包文件中,"ajaxclient"和"ajaxserver"可能...

    juery mobile使用ajax跨域请求服务器的小实例

    以下是一个简单的示例,展示了如何使用jQuery Mobile和Ajax进行跨域请求: ```html &lt;!DOCTYPE html&gt; &lt;title&gt;jQuery Mobile 跨域请求示例 , initial-scale=1"&gt; &lt;link rel="stylesheet" href="https://code....

    JSONP跨域请求实例详解

    2. **document.domain:** 同一顶级域名下的子域名可以通过设置`document.domain`来实现跨子域通信。 3. **window.name:** 利用`window.name`属性可以在页面卸载后保持数据,实现跨页面通信。 4. **Script标签:** ...

    js iframe跨域访问(同主域/非同主域)分别深入介绍

    从这个实例可以看出,在同主域跨域访问中,通过设置document.domain可以实现不同子域间的通信。在非同主域跨域中,虽然直接访问对方页面的内容会受到同源策略的限制,但通过parent或者parent.parent等方式可以间接地...

    javascript iframe跨域详解

    1. 同源策略中的例外情况允许使用document.domain来实现跨域。当两个页面的document.domain设置为同一个父域时,可以实现子域与父域之间或子域与子域之间的数据交换。例如,***和***都可以设置document.domain为"***...

    背景色换肤实例.rar

    本实例“背景色换肤实例.rar”着重讲解如何利用Cookie技术来实现用户自定义背景颜色并保存其设置,让用户在下次访问时仍然能保持他们喜欢的主题颜色。下面将详细阐述这一过程涉及的IT知识点。 1. **Cookie概念**:...

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

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

    详解自定义ajax支持跨域组件封装

    解决跨域问题有多种方案,例如使用document.domain+iframe、JSONP、CORS等方法。其中,document.domain+iframe方法可以用于主域相同而子域不同的请求。 本篇文章详细分析了自定义ajax支持跨域组件封装相关的知识点...

    iframe跨域高度自适应例子源码

    标题"iframe跨域高度自适应例子源码"指的是一个实例,展示了如何在跨域的情况下使`iframe`内容自动调整高度以适应其内部内容。这个例子提供了一个在线演示(http://okiner.cn/demo/cross-domain/iframe.html)以及源...

    剑指前端offerPDF版.pdf

    - 在同源策略下,两个文档如果具有相同的`document.domain`值,则它们被视为同源,从而可以相互访问对方的DOM元素和执行脚本。 - **错误处理**: - 代码片段中的`Script Error`提示表明在执行脚本时发生了错误。 ...

    js用cookie记住密码实例

    例如,可以使用`document.cookie`属性来设置Cookie,格式通常为`name=value; expires=date; path=directory; domain=domain_name`。其中,`expires`参数用于指定Cookie的有效期,可以是日期对象或UTC字符串。 ```...

    Ajax常见面试题.pdf

    - document.domain:原理是让不同子域之间的页面设置相同的domain,实现跨域。这通常用于相同主域名不同子域名的情况。 - iframe:可以将一个域的页面嵌入到另一个域的页面中,实现跨域。但需要注意,设置iframe...

    flash与JavaScript的互联实例

    - 在HTML中,使用`&lt;object&gt;`或`&lt;embed&gt;`标签嵌入Flash,同时设置`allowScriptAccess`属性为`always`或`sameDomain`,以允许JavaScript访问。 - 使用JavaScript的`window.onload`或`DOMContentLoaded`事件监听页面...

    JS操作Cookie写入和读取实例代码

    在这个实例中,我们首先检查`document.cookie`是否有内容,然后通过`indexOf`方法查找指定名称的Cookie。找到后,确定其值的开始和结束位置,并通过`substring`方法截取值。由于Cookie的值可能是URL编码的,因此使用...

    javascript与actionscript3.0通信实例.rar

    启用这一功能,需要在Flash的AS3代码中设置`allowScriptAccess`参数,通常设置为"always"或"sameDomain",以确保安全。 接下来,我们将详细介绍实现这一通信的步骤: 1. **在ActionScript 3.0中启用External ...

Global site tag (gtag.js) - Google Analytics