`

js 跨域取数据

阅读更多

 

一  主域名相同处理方法    document.domain+iframe的设置

 

对于主域相同而子域不同的例子,可以通过设置document.domain的办法来解决。具体的做法是可以在http://www.a.com/a.html和http://script.a.com/b.html两个文件中分别加上document.domain = ‘a.com’;然后通过a.html文件中创建一个iframe,去控制iframe的contentDocument,这样两个js文件之间就可以“交互”了。当然这种办法只能解决主域相同而二级域名不同的情况,如果你异想天开的把script.a.com的domian设为alibaba.com那显然是会报错地!代码如下:

 

www.a.com上的a.html
 
document.domain = 'a.com';
var ifr = document.createElement('iframe');
ifr.src = 'http://script.a.com/b.html';
ifr.style.display = 'none';
document.body.appendChild(ifr);
ifr.onload = function(){
    var doc = ifr.contentDocument || ifr.contentWindow.document;
    // 在这里操纵b.html
    alert(doc.getElementsByTagName("h1")[0].childNodes[0].nodeValue);
};
script.a.com上的b.html
 
document.domain = 'a.com';
这种方式适用于{www.kuqin.com, kuqin.com, script.kuqin.com, css.kuqin.com}中的任何页面相互通信。

 

 

备注:某一页面的domain默认等于window.location.hostname。主域名是不带www的域名,例如a.com,主域名前面带前缀的通常都为二级域名或多级域名,例如www.a.com其实是二级域名。 domain只能设置为主域名,不可以在b.a.com中将domain设置为c.a.com。

 

问题:

1、安全性,当一个站点(b.a.com)被攻击后,另一个站点(c.a.com)会引起安全漏洞。

2、如果一个页面中引入多个iframe,要想能够操作所有iframe,必须都得设置相同domain。

 

二 window.name 方法处理

 

 
 
 
 
1 引入test.js 类库
2 同及目录创建一个空的html页面为proxy.html,作为代理
  作用:当iframe远程访问的页面更改window.name属性后跳转到这个代理页面
  则当前页面与代理页面在同一个域名下,则可以取出代理页面的window.name
   
 
3 使用实例:www.aaa.com/a.html ,www.aaa.com/proxy.html, www.eee.com/b.html 
 
 a.html中
<script type="text/javascript" src="test.js"></script>
<script type="text/javascript">
var _str = '', _cnt = 0;  
 
function myfunc( id ) {
   return  function( data ) {  
_str += id + ':' + data + '\n';  
++_cnt;
if (_cnt >= 1)  alert(_str);  
   };  
}
 
var _links = [  
   { id: 1, url: 'http://www.aaa.com/test.html' } 
]; 
 
function dosome(){
   for (var _i=0; _i<_links.length; ++_i) { 
     wnRequest.send(_links[_i].url, myfunc(_links[_i].id));  
  }
}
dosome();
 
//wnRequest.setname('这里可能是一串加密用的密钥哦,俺从 https 那边过来滴!', 'http://www.eee.com/test8.html');  
 
</script>
 
代理页面时空的
 
 
 b.html 中  
<script type="text/javascript">
   window.name = '需要跨域传递的数据';
</script>
 

 

 

附件中是:跨域调用的类库

 

参考来自: http://www.iteye.com/topic/901182

 

 

分享到:
评论

相关推荐

    跨域访问数据-DEMO

    JSONP的工作原理是,客户端(通常是JavaScript)创建一个`&lt;script&gt;`标签,其`src`属性指向服务端的URL,服务端返回一个JavaScript函数调用,包含所需的数据。例如,`callback(data)`,客户端预先定义好的`callback`...

    web前端跨域取JSON

    在Web开发中,"跨域取JSON"是一个重要的概念,特别是在前端开发中。"跨域"是指一个域名下的网页尝试访问另一个域名下的资源时,由于浏览器的安全策略限制,这种行为通常会被禁止,这就是所谓的同源策略(Same-origin...

    js跨域问题解决方案.

    JavaScript跨域问题,是Web开发中常见的一个挑战,由于浏览器的同源策略限制,JavaScript无法直接访问不同源的资源,这在实现某些功能时会带来不便。本文将深入探讨JavaScript跨域问题的原因、影响以及多种解决方案...

    js跨域请求数据的3种常用的方法

    以上就是JavaScript跨域请求数据的三种常见方法。在实际开发中,选择哪种方法取决于项目需求、兼容性考虑以及服务器端的配合程度。对于需要复杂交互或安全性要求较高的场景,CORS可能是更好的选择;而对于简单的GET...

    javaScript跨域通信

    JavaScript跨域通信是Web开发中的一个重要概念,它涉及到浏览器的安全策略和Ajax请求的限制。由于浏览器的同源策略,一个域名下的JavaScript无法直接访问或操作不同域名下的资源,这就需要我们采用特定的方法来实现...

    JS跨域访问解决方案的总结.doc

    JavaScript跨域访问解决方案 在Web开发中,由于同源策略的限制,JavaScript通常只能与同一协议、域名和端口的服务器进行通信。然而,随着Web应用程序的复杂性和交互性增加,跨域请求变得越来越普遍,比如加载外部...

    海康威视h5player.js 2.0版 跨域隔离

    海康威视h5player.js 2.0版 跨域隔离解决方案 海康威视h5player.js 2.0版为提升解码性能,采用了多线程解码技术,使用SharedArrayBuffer来完成多线程之间的数据交互。然而,SharedArrayBuffer等高级功能可被攻击者...

    完美解决iframe跨域问题

    - `window.name`的长度限制取决于浏览器,一般可存储几MB的数据,但过大的数据可能会影响性能。 - 这种方法的安全性相对较低,因为任何页面都可以读取到`window.name`,所以敏感信息不宜通过这种方式传递。 总结...

    JS跨域取XML--借助AS的URLLoader

    本文讨论的是如何通过ActionScript(AS)中的URLLoader类来解决JavaScript(JS)中的跨域问题,特别是当数据接口只提供XML格式数据时的场景。ActionScript是Adobe Flash平台使用的编程语言,而URLLoader类则是...

    iframe 跨域访问session

    同源策略是Web安全的核心机制,防止恶意网站通过脚本访问其他网站的敏感数据。然而,这在某些场景下会带来不便,比如当我们希望在不同的二级域名或者完全不同的域名之间共享用户认证信息时。`iframe` 跨域访问`...

    Ajax跨域访问解决方案

    总结来说,解决Ajax跨域访问问题有多种途径,选择哪种方式取决于具体需求、服务器支持以及安全性考虑。理解并掌握这些方法,能帮助开发者更好地应对实际项目中的跨域挑战。在开发过程中,确保遵循最佳实践,既能保障...

    JavaScript跨域处理

    JavaScript跨域处理是Web开发中的一个关键概念,由于浏览器的安全策略,JavaScript通常被限制在同一源策略下运行,这意味着脚本只能访问与加载它的页面来自同一域名的资源。然而,在实际应用中,为了实现数据交互、...

    js跨域解决方案.docx

    ### js跨域解决方案 #### 一、问题描述与背景 在网页开发中,经常会遇到需要一个主页面通过`iframe`动态加载子页面的情况,并且希望根据子页面的内容自动调整`iframe`的高度,以达到视觉上的无缝对接。然而,当...

    showModalDialog跨域解决例子

    在互联网世界中,由于同源策略的限制,JavaScript在不同域名之间进行通信或操作时会受到严格的限制,这就是所谓的“跨域”问题。"showModalDialog"是HTML5中的一个古老对话窗口方法,用于在当前页面上打开一个新的...

    Geoserver跨域问题解决方案

    当从一个源(如浏览器中的JavaScript)尝试访问不同源(如另一个域名或端口)的服务时,浏览器会出于安全原因阻止这种请求,这就是所谓的“跨域”限制。本篇文章将详细介绍如何解决Geoserver的跨域问题。 首先,...

    layer弹窗:top.layer弹窗到父页面跨域解决办法

    跨域问题在进行页面交互、数据获取等方面都会造成阻碍。 为了解决这个问题,HTML5引入了**postMessage** API。`window.postMessage()`方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文档的消息...

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

    跨域是Web开发中一个常见的概念,由于浏览器的同源策略限制,JavaScript通常只能与同一域名下的资源进行交互。然而,随着互联网应用的发展,不同源之间的数据交换变得日益重要,因此出现了多种跨域解决方案。本文将...

    跨域下载文件

    这是浏览器为了保证用户数据安全而设定的一项安全策略,它规定了JavaScript只能访问与当前页面同源(协议、域名、端口都相同)的资源。当需要跨域请求资源时,如果没有正确设置,浏览器会阻止请求,导致下载失败。 ...

Global site tag (gtag.js) - Google Analytics