document.domain ajax,用document.domain+iframe实现Ajax跨子域

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时,会产生安全性异常,拒绝访问。

使用document.domain+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的主要代码如下:

Copy to Clipboard

e2bccdbad7bc28f4ef2a8fa52a21e480.gif引用的内容:[www.veryhuo.com]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
document.domain是JavaScript中的一个属性,用于获取当前网页的域名。它可以帮助实现域操作。通过更改document.domain属性,可以使不同子域名之间的网页进行域通信。具体来说,当父域名相同而子域名不同的时候,通过设置document.domain为共同的父域名,就可以实现域操作。这样做的前提是需要在两个子域名下都设置相同的document.domain属性值。 然而,需要注意的是,通过更改document.domain属性进行域操作有一些限制和注意事项。首先,该方法只适用于主域名相<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [js设置document.domain实现域的注意点分析](https://download.csdn.net/download/weixin_38627104/13618996)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Chrome 又搞事情,这种域方案要被禁用了!](https://blog.csdn.net/weixin_39843414/article/details/122677775)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值