`
wenrunchang123
  • 浏览: 249234 次
  • 性别: 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跨域获取数据

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

    由于js同源策略的影响,当在某一域名下请求其他域名,或者同一域名,不同端口下的url时,就会变成不被允许的跨域请求。 那这个时候通常怎么解决呢,对此菜鸟光头我稍作了整理: 1.JavaScript  在原生js(没有jQuery...

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

    下面小编就为大家带来一篇jQuery使用ajax跨域获取数据的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Ajax +jquery跨域获取JSON

    这个就么问题了,成功实现跨域读JSON,然后自定义显示天气预报。

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

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

    jquery+thinkphp实现跨域抓取数据的方法

    本文实例讲述了jquery+thinkphp实现跨域抓取数据的方法。分享给大家供大家参考,具体如下: 今天做一个远程抓取数据的功能,记得jquery可以用Ajax...//远程抓取获取数据 $("#update_ac").click(function() { $user

    jquery的ajax和getJson跨域获取json数据的实现方法

    很多开发人员在使用jquery在前端和服务器端进行数据交互,所以很容易会认为在前端利用jquery就可以读取任何站点的数据了。近日在进行开 发时,因为要和第三方公司的一个项目进行数据的共享,因为考虑多不占用服务器...

    Javascript AJAX跨域Flash辅助插件Ajaxf.zip

    Javascript跨域传输数据存在很大的限制,通过普通的方式很难突破这个限制,通常使用API来跨域,更经常看到的是通过页面代理的方式访问,这样实现起来很繁琐,效率也很低,所以也就搞出了这个插件,通过Flash来实现...

    AJAX跨域请求JSONP获取JSON数据的实例代码

    Asynchronous JavaScript and XML (Ajax) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术。Ajax 这篇文章主要介绍了AJAX跨域请求JSONP获取JSON数据的实例代码,需要的朋友可以参考下

    AJAX跨域请求之JSONP获取JSON数据

    使用 XMLHttpRequest 函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器。Ajax 也是许多 mashup 的驱动力,它可将来自多个地方的内容集成为单一 Web 应用程序。 不过,由于受到浏览器...

    asp ajax跨域提交数据

    星期五写了个分类信息的小东东!... 需要一个js函数.当每出来一条记录时,就把ip替换为城市: 代码如下:[removed] function queryAddress(strID){ try{ var qIp=document.getElementById(“ip_”+strID); var qU

    jsvascript跨域爬虫

    代码支持前端爬虫,但是要设置浏览器支持跨域。...如果想要自动登陆并且进行大量数据爬取请见我的另一资源利用HtmlUnit和多线程进行快速大量并发爬取和清洗... 登陆后必须跨域访问进行获取数据,可以模仿一下获取响应的json

    使用jsonp实现跨域获取数据实例讲解

    js部分 (function(window, document) { 'use strict'; var jsonp = function(url, data, callback) { //1、挂载回调函数 var fnsuffix = Math.random().toString().replace('.', ''); var cbFuncName = 'my_...

    基于iframe实现ajax跨域请求 获取网页中ajax数据

    主要介绍了基于iframe实现ajax跨域请求,并获取网页中ajax数据,如何利用网页ajax请求暴露出来的接口去抓取网页数据?需要的朋友可以参考下

    jQuery使用ajax跨域请求获取数据

    跨域是我在日常面试中经常会问到的问题,这词在前端界出现的频率不低,主要原因还是由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的内容),因为我们在日常的项目开发时会不可避免的需要进行跨域操作...

    JavaScript用JSONP跨域请求数据实例详解

    Javascript跨域访问是web开发者经常遇到的问题,什么是跨域,就是一个域上加载的脚本获取或操作另一个域上的文档属性。下面这篇文章主要介绍了JavaScript用JSONP跨域请求数据的方法,需要的朋友可以参考借鉴,下面来...

    js实现跨域的4种实用方法原理分析

    js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。 要解决...

    浏览器跨域获取Lrc歌词数据的解决办法

    但如果要访问不同域的数据时,由于浏览器的安全设置,XMLHTTP没有权限获取数据,而IFRAME没有权限将获取的数据传递给父窗口,似乎没有其它解决办法。 顿悟…… 网页内引用不同域的脚本并不会提示权限不足,对了,...

    JS JSOP跨域请求实例详解

    JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。这篇文章主要介绍了JS JSOP跨域请求实例详解的相关资料,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics