`
wenrunchang123
  • 浏览: 251205 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JS跨域获取数据

 
阅读更多

项目中遇到一个需求,数据是通过跨域获取的,在百度查了下,跨域获取数据主要有以下几种方式:

 

A. 嵌套iframe;

 

B.服务器端充当中转代理方式有很多可以由服务器端程序实现,也可以修改服务器配置实现,下面举例Apache 重写( mod_rewrite proxy 模式)方式:

Apache 的安装目录下的 conf/httpd.conf  文件添加如下语句:

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule rewrite_module modules/mod_rewrite.so

RewriteEngine On

RewriteRule ^/_proxy/(.*)$ http://$1 [P,L]

 

C.JS文件注入,因为script的src属性可以跨域的,Jquery.ajax()也是用这种方式实现跨域。

 

以下C方式的实现代码:

TEST.JsLoader.scriptId = 1;
TEST.JsLoader.prototype.load = function(src, doc, charset) {
    var sId = TEST.JsLoader.scriptId;
    TEST.JsLoader.scriptId++;
    var o = this;
    setTimeout(function() {
        o._load2.apply(o, [sId, src, doc, charset]);
        o = null;
    },
    0);
}
TEST.JsLoader.prototype._load2 = function(sId, src, doc, charset) {
    _doc = doc || document;
    charset = charset || "gb2312";
    var _ie = TEST.userAgent.ie,
    _js = _doc.createElement("script");
    TEST.event.addEvent(_js, (_ie ? "readystatechange": "load"), (function(o) {
        return (function() {
            if (_ie) {
                if (_js && !(_js.readyState == "complete" || _js.readyState == "loaded")) {
                    return;
                }
            }
            o.onload();
            if (!o.debug) {
                TEST.dom.removeElement(_js);
            }
            _js = null;
        });
    })(this));
    if (!_ie) {
        TEST.event.addEvent(_js, "error", (function(o) {
            return (function() {
                o.onerror();
                if (!o.debug) {
                    TEST.dom.removeElement(_js);
                }
                _js = null;
            });
        })(this));
    }
    _js.id = "js_" + sId;
    _js.defer = true;
    _js.charset = charset;
    _js.src = src;
    _doc.getElementsByTagName("head")[0].appendChild(_js);
};
TEST["js" + "Loader"] = TEST.JsLoader;

 

调用列子:

 

 

var jsLoader = new TEST.JsLoader(); 
//onload加载完JS后响应
jsLoader.onload = function(){
	
}
jsLoader.load('http://test.js');

 

 

<!--EndFragment-->

分享到:
评论

相关推荐

    jQuery使用ajax跨域获取数据

    jQuery使用ajax跨域获取数据

    ajax跨域获取数据

    但随着互联网应用的发展,这种需求变得越来越普遍,于是诞生了"ajax跨域获取数据"的技术解决方案。这个话题涵盖了多个关键知识点,包括同源策略、CORS(跨源资源共享)以及JSONP等。 1. 同源策略:同源策略是浏览器...

    js 跨域取数据

    JavaScript跨域获取数据是Web开发中的一个重要概念,由于浏览器的安全策略,JavaScript通常被限制在同一源策略下运行,这意味着它不能直接请求与当前页面不同源(协议、域名或端口)的资源。为了解决这个问题,...

    Ajax +jquery跨域获取JSON

    对于"跨域获取JSON",通常Web浏览器遵循同源策略,限制了JavaScript从不同源获取数据的能力。为了解决这个问题,我们可以利用JSONP(JSON with Padding)或者CORS(Cross-Origin Resource Sharing)机制。JSONP是一...

    js跨域对象类

    当脚本加载完成后,浏览器会执行这个函数,从而实现了跨域获取数据。 **CORS** 是一种更为现代、安全且强大的跨域解决方案。它需要服务器端配合,在响应头中添加`Access-Control-Allow-Origin`字段,明确允许哪些源...

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

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

    ajax远程跨域获取163rss新闻

    **Ajax 远程跨域获取 163RSS...总结,使用Ajax进行跨域获取163RSS新闻,需要解决跨域问题,选择合适的跨域策略,如CORS或JSONP,并编写相应的Ajax请求代码来处理数据。文件“ajax163”可能是实现这一功能的源代码文件。

    使用Jsonp方式跨域获取json

    JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`&lt;script&gt;`标签可以跨域请求资源的特性来实现数据的交换。在Web开发中,由于浏览器的同源策略限制,JavaScript通常无法直接访问不同源的资源,但JSONP...

    asp.net结合html,javascript实现无刷新跨域数据提交

    ASP.NET结合HTML、JavaScript实现无刷新跨域数据提交 本文将介绍如何使用ASP.NET、HTML和JavaScript实现无刷新跨域数据提交。跨域数据提交是指在不同的域名之间传递数据,而不需要刷新整个页面。 首先,需要理解...

    跨域访问数据-DEMO

    在这个DEMO中,`iis_envoy_domain_services`和`iis_envoy_domain_main`可能就是配置代理服务的文件,Envoy作为中间层,接收客户端请求,然后转发到目标服务器获取数据,再将结果返回给客户端,这样就实现了跨域访问...

    jQuery使用ajax跨域获取数据的简单实例

    在互联网应用开发中,常常需要从前端向后端发送异步请求以获取数据。由于浏览器同源策略的限制,当请求地址与当前页面地址的协议、域名、端口其中之一不同时,就会出现跨域问题。跨域资源共享(CORS)是一种解决跨域...

    jQuery使用JSONP实现跨域获取数据的三种方法详解

    本文将详细介绍使用jQuery实现JSONP跨域获取数据的三种方法。 ### 第一种方法:$.ajax()函数 $.ajax()是jQuery中最为通用的Ajax实现方式。要使用JSONP方法,我们需要在$.ajax()函数中设置`dataType`为'jsonp'。...

    jsonp跨域获取数据的基础教程.docx

    总之,JSONP是跨域获取数据的一种常见方法,尤其在需要兼容老版本浏览器,或API仅支持GET请求时。尽管存在一定的局限性和安全问题,但它仍然是前端开发中解决跨域问题的一个实用工具。在实际项目中,开发者需要根据...

    arcgis js跨域解决策略

    跨域问题源于浏览器的安全策略,旨在防止恶意脚本通过JavaScript从其他域名获取数据,以保护用户隐私。但在GIS应用中,我们需要跨域请求ArcGIS服务器上的地图服务、图层数据等资源,因此需要找到合法的解决方法。 ...

    jquery跨域获取json

    总结来说,"jquery跨域获取json"是一个关于JavaScript编程和jQuery库如何通过JSONP技术解决跨域获取数据的问题。在实际开发中,了解并掌握这一技术对前端开发者尤其重要,因为很多API和数据服务都是部署在不同的域名...

    html通过 ajax jsonp跨域请求接收和传送数据

    JSONP(JSON with Padding)是一种解决跨域问题的非标准方法,主要用于JSON数据的获取。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSONP的核心思想是利用`&lt;script&gt;`标签的src...

    js跨域解决方案

    JavaScript跨域是Web开发中一个常见的挑战,由于浏览器的同源策略限制,JavaScript无法直接访问不同源(协议、域名或端口不一致)的资源。本文将深入探讨JS跨域的解决方案,帮助开发者理解并解决这个问题。 首先,...

    解决JS跨域访问IFrame的解决方案

    在JSP中,可能通过HttpClient向IFrame加载的源发送请求,获取数据,然后在服务器端处理后返回给JSP页面,间接实现跨域通信。 综上所述,解决JS跨域访问IFrame的问题,需要根据实际需求和环境选择合适的解决方案,...

Global site tag (gtag.js) - Google Analytics