项目中遇到一个需求,数据是通过跨域获取的,在百度查了下,跨域获取数据主要有以下几种方式:
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跨域获取数据
但随着互联网应用的发展,这种需求变得越来越普遍,于是诞生了"ajax跨域获取数据"的技术解决方案。这个话题涵盖了多个关键知识点,包括同源策略、CORS(跨源资源共享)以及JSONP等。 1. 同源策略:同源策略是浏览器...
JavaScript跨域获取数据是Web开发中的一个重要概念,由于浏览器的安全策略,JavaScript通常被限制在同一源策略下运行,这意味着它不能直接请求与当前页面不同源(协议、域名或端口)的资源。为了解决这个问题,...
对于"跨域获取JSON",通常Web浏览器遵循同源策略,限制了JavaScript从不同源获取数据的能力。为了解决这个问题,我们可以利用JSONP(JSON with Padding)或者CORS(Cross-Origin Resource Sharing)机制。JSONP是一...
当脚本加载完成后,浏览器会执行这个函数,从而实现了跨域获取数据。 **CORS** 是一种更为现代、安全且强大的跨域解决方案。它需要服务器端配合,在响应头中添加`Access-Control-Allow-Origin`字段,明确允许哪些源...
以上就是JavaScript跨域请求数据的三种常见方法。在实际开发中,选择哪种方法取决于项目需求、兼容性考虑以及服务器端的配合程度。对于需要复杂交互或安全性要求较高的场景,CORS可能是更好的选择;而对于简单的GET...
**Ajax 远程跨域获取 163RSS...总结,使用Ajax进行跨域获取163RSS新闻,需要解决跨域问题,选择合适的跨域策略,如CORS或JSONP,并编写相应的Ajax请求代码来处理数据。文件“ajax163”可能是实现这一功能的源代码文件。
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`<script>`标签可以跨域请求资源的特性来实现数据的交换。在Web开发中,由于浏览器的同源策略限制,JavaScript通常无法直接访问不同源的资源,但JSONP...
ASP.NET结合HTML、JavaScript实现无刷新跨域数据提交 本文将介绍如何使用ASP.NET、HTML和JavaScript实现无刷新跨域数据提交。跨域数据提交是指在不同的域名之间传递数据,而不需要刷新整个页面。 首先,需要理解...
在这个DEMO中,`iis_envoy_domain_services`和`iis_envoy_domain_main`可能就是配置代理服务的文件,Envoy作为中间层,接收客户端请求,然后转发到目标服务器获取数据,再将结果返回给客户端,这样就实现了跨域访问...
在互联网应用开发中,常常需要从前端向后端发送异步请求以获取数据。由于浏览器同源策略的限制,当请求地址与当前页面地址的协议、域名、端口其中之一不同时,就会出现跨域问题。跨域资源共享(CORS)是一种解决跨域...
本文将详细介绍使用jQuery实现JSONP跨域获取数据的三种方法。 ### 第一种方法:$.ajax()函数 $.ajax()是jQuery中最为通用的Ajax实现方式。要使用JSONP方法,我们需要在$.ajax()函数中设置`dataType`为'jsonp'。...
总之,JSONP是跨域获取数据的一种常见方法,尤其在需要兼容老版本浏览器,或API仅支持GET请求时。尽管存在一定的局限性和安全问题,但它仍然是前端开发中解决跨域问题的一个实用工具。在实际项目中,开发者需要根据...
跨域问题源于浏览器的安全策略,旨在防止恶意脚本通过JavaScript从其他域名获取数据,以保护用户隐私。但在GIS应用中,我们需要跨域请求ArcGIS服务器上的地图服务、图层数据等资源,因此需要找到合法的解决方法。 ...
总结来说,"jquery跨域获取json"是一个关于JavaScript编程和jQuery库如何通过JSONP技术解决跨域获取数据的问题。在实际开发中,了解并掌握这一技术对前端开发者尤其重要,因为很多API和数据服务都是部署在不同的域名...
JSONP(JSON with Padding)是一种解决跨域问题的非标准方法,主要用于JSON数据的获取。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSONP的核心思想是利用`<script>`标签的src...
JavaScript跨域是Web开发中一个常见的挑战,由于浏览器的同源策略限制,JavaScript无法直接访问不同源(协议、域名或端口不一致)的资源。本文将深入探讨JS跨域的解决方案,帮助开发者理解并解决这个问题。 首先,...
在JSP中,可能通过HttpClient向IFrame加载的源发送请求,获取数据,然后在服务器端处理后返回给JSP页面,间接实现跨域通信。 综上所述,解决JS跨域访问IFrame的问题,需要根据实际需求和环境选择合适的解决方案,...