`
wen866595
  • 浏览: 268900 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

js跨域

    博客分类:
阅读更多

 

跨域的安全限制都是指浏览器端来说的 服务器端是不存在跨域安全限制的

 

 

下面是JQuery1.7 关于 jsonp 的说明:

如果指定了script 或者 jsonp 类型,那么当从服务器接收到数据时,实际上是用了 < script > 标签而不是XMLHttpRequest 对象。这种情况下, $.ajax() 不再返回一个 XMLHttpRequest 对象,并且也不会传递事件处理函数,比如 beforeSend

 

 

 

Jsonp的原理其实就是动态创建一个 script 标签,其 src 为请求的地址,服务器返回的响应体是一段合法的 JS 代码,比如 json 对象。浏览器得到响应体后用 js 引擎执行代码。

 

 

 

在浏览器端:

预先定义一个jsonp 的回调函数:

function cb(json) {

    alert(json.name);

}

 

然后创建script 标签加载 js

function loadJS(url, success) {
	var domScript = document.createElement('script');
	domScript.src = url;
	success = success || function(){};
	domScript.onload = domScript.onreadystatechange = function() {
		if (!this.readyState || 'loaded' === this.readyState || 'complete' === this.readyState) {
			this.onload = this.onreadystatechange = null;
			success();
			this.parentNode.removeChild(this);
		}
	}
	document.getElementsByTagName('head')[0].appendChild(domScript);
}
 

 

 

 

在服务器端:

String jsonpcb = request.getParameter("jsonpcallback"); // 获取回调的 js 函数名

String param = ""; // 服务器根据参数生成的响应内容,是 json 对象的序列化

String res = ""; // 根据请求参数生成响应,并序列化为 json 对象

String resBody = jsonpcb + "(" + res + ");" // 把函数调用序列化

 

 

 

在服务器端生成的响应可能就是这样的:

cb({

"version":123,

"name": "abc"

});

 

 

 

浏览器得到响应后,调用 js引擎解释执行。

 

 

1
15
分享到:
评论
2 楼 wen866595 2012-07-24  
liguocai2009 写道
jsonp无法知道返回的http状态码的,怎么判断一个请求是成功还是失败。我之前也是封装过jsonp,不知道楼主是如何解决这个问题的。


我对JS了解很少,你可以看看这个:http://hi.baidu.com/erik168/item/cbb7ede8865ac80c65db00d9
1 楼 liguocai2009 2012-07-23  
jsonp无法知道返回的http状态码的,怎么判断一个请求是成功还是失败。我之前也是封装过jsonp,不知道楼主是如何解决这个问题的。

相关推荐

    js跨域对象类

    JavaScript跨域对象类是一种在Web开发中解决同源策略限制的技术。同源策略是浏览器为了保护用户数据安全而设定的一项安全政策,它规定了只有来自相同域名的HTTP请求才能互相访问资源,不同源的请求会被阻止。然而,...

    pdf.js 跨域版本

    跨域问题通常在 JavaScript 中是个常见的安全限制,浏览器不允许脚本从一个源(域名、协议或端口)请求另一个源的资源,以防止恶意网站通过脚本读取其他网站的数据。在 PDF.js 原版中,如果 PDF 文件存储在与网页...

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

    标题《JS跨域访问解决方案总结.pdf》指明文档的核心内容是关于JavaScript跨域访问问题的解决方法。跨域访问问题是指由于浏览器的同源策略限制,网页中JavaScript代码出于安全原因不能访问另一个源(域名、协议或端口...

    js跨域解决方案

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

    js跨域问题解决方案.

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

    JS跨域调用WCF服务实例(WCF服务宿主到控制台)

    JavaScript(JS)与Windows Communication Foundation(WCF)服务之间的跨域调用是Web开发中常见的需求,尤其是在构建分布式系统和前后端分离的应用时。本文将详细介绍如何实现JS跨域调用WCF服务,并通过一个控制台...

    js跨域的理解与实现

    总的来说,JavaScript跨域的实现方式多样,可以根据具体需求和环境选择合适的策略。JSONP适用于简单的数据请求,CORS适合复杂的跨域交互,代理服务器适用于服务器可控制的场景,而`document.domain`和`postMessage`...

    JS跨域调用Window服务代码示例

    在JavaScript(JS)中,由于同源策略的限制,我们不能直接从网页中访问其他不同源(协议、域名或端口)的资源。然而,为了实现特定功能,如跨域调用Window服务来获取本机硬件信息,我们需要采用一些特殊的技术来规避...

    arcgis js跨域解决策略

    在GIS(地理信息系统)开发中,ArcGIS JavaScript API(arcgis js)是Esri公司提供的一款强大的Web GIS开发工具,用于构建地图应用。然而,在实际开发过程中,由于浏览器的同源策略限制,当我们在不同域名下尝试访问...

    JS跨域知识点代码

    JavaScript跨域是Web开发中的一个重要概念,涉及到浏览器的同源策略和如何允许不同源之间进行数据交换。在本文中,我们将深入探讨JavaScript跨域的基本原理、常见方法以及相关的代码实现。 同源策略(Same-Origin ...

    javascript跨域插件 实现双向跨域

    实现javascript跨域,可以在不同域名双向通信,内含demo,支持IE6+、火狐,谷歌等浏览器 配套文章:http://blog.csdn.net/mycwq/article/details/16344171

    JS跨域访问解决方案总结[参照].pdf

    JS 跨域访问解决方案总结 JS 跨域访问解决方案总结是指在不同域名站点之间进行资源访问的解决方案。默认情况下,脚本访问文档属性等数据采用的是同源策略(Same origin policy),即如果两个页面的协议、域名和端口...

    【前端-PC】html vue.js 跨域.zip

    Vue.js 是一个流行的轻量级JavaScript框架,用于构建用户界面。它以其简洁的API、易于上手的特性和强大的功能而受到广泛欢迎。Vue的核心特性包括声明式渲染、组件化、虚拟DOM、指令系统等,这些使得开发者能高效地...

    Javascript跨域和Ajax跨域解决方案

    JavaScript跨域和Ajax跨域是Web开发中常见的问题,尤其在进行前后端分离或API调用时,由于浏览器的同源策略限制,不同域名、协议或端口的资源请求会被阻止,这就是所谓的“跨域”。本文将深入探讨JavaScript和Ajax...

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

    在Web开发中,JavaScript(JS)的同源策略限制了不同源之间进行交互,包括从一个页面中的脚本访问另一个不同源的IFrame内容。"解决JS跨域访问IFrame的解决方案"这一主题关注的就是如何克服这个限制,使得在JSP页面中...

    解决ajax不能访问本地文件问题(利用js跨域原理)

    本文将探讨如何利用JavaScript的跨域原理来解决这个问题。 首先,我们要理解什么是跨域。跨域是指一个源(Origin,由协议、域名和端口组成)试图访问另一个源的资源时,如果这两个源不相同,就会被浏览器视为跨域,...

    ziilaa_uc(JS跨域操作工具:uc v1.0)

    【标题】"ziilaa_uc(JS跨域操作工具:uc v1.0)" 提供的是一款JavaScript跨域操作工具,名为uc,版本为1.0。在Web开发中,由于浏览器的安全策略,不同源的JavaScript代码通常无法直接访问彼此的数据,这被称为...

    js 跨域解决方案

    JavaScript跨域是Web开发中一个常见的挑战,由于浏览器的同源策略限制,JavaScript无法直接访问不同源(协议、域名或端口不一致)的资源,这在开发过程中可能会造成诸多不便。本文将深入探讨JavaScript跨域问题及其...

Global site tag (gtag.js) - Google Analytics