项目中遇到一个需求,数据是通过跨域获取的,在百度查了下,跨域获取数据主要有以下几种方式:
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跨域获取数据
由于js同源策略的影响,当在某一域名下请求其他域名,或者同一域名,不同端口下的url时,就会变成不被允许的跨域请求。 那这个时候通常怎么解决呢,对此菜鸟光头我稍作了整理: 1.JavaScript 在原生js(没有jQuery...
下面小编就为大家带来一篇jQuery使用ajax跨域获取数据的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
这个就么问题了,成功实现跨域读JSON,然后自定义显示天气预报。
asp.net结合html,javascript实现无刷新跨域数据提交
本文实例讲述了jquery+thinkphp实现跨域抓取数据的方法。分享给大家供大家参考,具体如下: 今天做一个远程抓取数据的功能,记得jquery可以用Ajax...//远程抓取获取数据 $("#update_ac").click(function() { $user
很多开发人员在使用jquery在前端和服务器端进行数据交互,所以很容易会认为在前端利用jquery就可以读取任何站点的数据了。近日在进行开 发时,因为要和第三方公司的一个项目进行数据的共享,因为考虑多不占用服务器...
Javascript跨域传输数据存在很大的限制,通过普通的方式很难突破这个限制,通常使用API来跨域,更经常看到的是通过页面代理的方式访问,这样实现起来很繁琐,效率也很低,所以也就搞出了这个插件,通过Flash来实现...
Asynchronous JavaScript and XML (Ajax) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术。Ajax 这篇文章主要介绍了AJAX跨域请求JSONP获取JSON数据的实例代码,需要的朋友可以参考下
使用 XMLHttpRequest 函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器。Ajax 也是许多 mashup 的驱动力,它可将来自多个地方的内容集成为单一 Web 应用程序。 不过,由于受到浏览器...
星期五写了个分类信息的小东东!... 需要一个js函数.当每出来一条记录时,就把ip替换为城市: 代码如下:[removed] function queryAddress(strID){ try{ var qIp=document.getElementById(“ip_”+strID); var qU
代码支持前端爬虫,但是要设置浏览器支持跨域。...如果想要自动登陆并且进行大量数据爬取请见我的另一资源利用HtmlUnit和多线程进行快速大量并发爬取和清洗... 登陆后必须跨域访问进行获取数据,可以模仿一下获取响应的json
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数据,如何利用网页ajax请求暴露出来的接口去抓取网页数据?需要的朋友可以参考下
跨域是我在日常面试中经常会问到的问题,这词在前端界出现的频率不低,主要原因还是由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的内容),因为我们在日常的项目开发时会不可避免的需要进行跨域操作...
Javascript跨域访问是web开发者经常遇到的问题,什么是跨域,就是一个域上加载的脚本获取或操作另一个域上的文档属性。下面这篇文章主要介绍了JavaScript用JSONP跨域请求数据的方法,需要的朋友可以参考借鉴,下面来...
js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。 要解决...
但如果要访问不同域的数据时,由于浏览器的安全设置,XMLHTTP没有权限获取数据,而IFRAME没有权限将获取的数据传递给父窗口,似乎没有其它解决办法。 顿悟…… 网页内引用不同域的脚本并不会提示权限不足,对了,...
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。这篇文章主要介绍了JS JSOP跨域请求实例详解的相关资料,需要的朋友可以参考下