`

jsonP的原理与在项目中的使用

阅读更多
要解决的问题:
由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com 的服务器沟通,而 HTML 的 <script> 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的 JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。

   为了让浏览器可以在 <script> 元素执行,从 src 里 URL 回传的必须是可执行的 JavaScript。在 JSONP 的使用模式里,该 URL 回传的是由函数呼叫包起来的动态生成 JSON,这就是JSONP 的“填充(padding)”或是“前辍(prefix)”的由来。

Jsonp原理:

首先在客户端注册一个callback, 然后把callback的名字传给服务器。

此时,服务器先生成 json 数据。
然后以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 jsonp.

最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。

客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里.(动态执行回调函数)



代码:

     比如客户想访问
http://www.yiwuku.com/myService.aspx?jsonp=callbackFunction
  假设客户期望返回JSON数据:
["customername1","customername2"]

  那么真正返回到客户端的Script Tags:
callbackFunction([“customername1","customername2"])

  可能的调用方式:
 
 <script type="text/javascript" src="http://www.yiwuku.com/myService.aspx?jsonp=callbackFunction" />


同源策略好处:

1. 保护客户的数据的隐私数据,比如cookie等信息,重点预防,比如baidu.com的程序就不能访问google.com域下的私有数据,否则,你的gmail就有可能被攻破了。
2. 保护服务器端的资源,一个比如baidua.com不能直接嵌套baidu.com的内容

分享到:
评论

相关推荐

    sso-jsonp-demo

    在本示例"ss0-jsonp-demo"中,主要展示了如何使用JSONP来实现单点登录(Single Sign-On,简称SSO)的功能。 首先,我们要理解什么是SSO。SSO是指用户在一个应用系统中登录后,可以在其他多个相互信任的应用系统中...

    跨域访问解决方法-jsonp

    本文将详细探讨JSONP的工作原理以及如何在实际项目中使用它来跨域获取JSON数据。 ### JSONP简介 JSONP全称为"JSON Padding",它并不是JSON的一种新格式,而是一种利用动态创建`&lt;script&gt;`标签来绕过同源策略的技巧...

    使用Jsonp方式跨域获取json

    JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`&lt;script&gt;`标签可以跨域请求资源的特性来实现数据的交换。...在实际项目中,了解和掌握JSONP的使用能帮助开发者更好地处理跨域数据交互的问题。

    jsonp源码以及jar包

    - `jsoup-1.5.2.jar`:这是核心库,包含了`jsoup`的所有功能,可以直接引入项目中使用。 - `jsoup-1.5.2-sources.jar`:包含源代码,有助于开发者理解库的工作原理,调试或自定义功能。 综上所述,`jsoup`是一个...

    纯servlet实现JSONP

    在这个纯Servlet实现JSONP的例子中,我们将深入理解JSONP的工作原理,以及如何在Java的Servlet环境中实现这一功能。 首先,让我们了解JSONP的基本概念。JSON(JavaScript Object Notation)是一种轻量级的数据交换...

    跨域访问禁止以及使用JSONP实现跨域的示例

    在标题"跨域访问禁止以及使用JSONP实现跨域的示例"中,我们将探讨如何应对这一挑战,特别是通过JSONP技术来突破限制。 首先,我们要理解什么是跨域。跨域是指一个域下的文档或脚本试图请求另一个域下的资源。比如,...

    jsonp.pdf文件

    ### JSONP在方案中心项目中的应用 #### 一、背景介绍与问题提出 随着Web技术的发展,AJAX(Asynchronous JavaScript and XML)作为一种提高Web应用交互性和用户体验的技术被广泛采用。然而,AJAX的核心组件...

    本地实现的最简单jsonp例子.zip

    JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`&lt;script&gt;`标签可以...随着CORS(跨源资源共享)的普及,JSONP的使用逐渐减少,但在某些老项目或低版本浏览器中,JSONP仍然是跨域数据交互的一个重要手段。

    jsonp 简单示例

    通过分析这个示例,开发者可以理解JSONP的工作原理,并将其应用到实际的项目中,解决跨域数据交互的问题。尽管现代Web开发中有了CORS(Cross-Origin Resource Sharing)这样的更安全的跨域解决方案,但在某些情况下...

    JSONPCallbackValidator验证JSONP回调的库

    在使用JSONP时,服务器会将数据封装在一个JavaScript函数调用中返回,这个函数名由客户端指定,通常通过查询参数`callback`传递。 该库由Will Durand开发,版本号1a7d388,其主要功能是确保客户端提供的回调函数...

    jquery-jsonp-master.zip_jsonp

    在jQuery中,使用JSONP主要通过`$.ajax()`或`$.getJSON()`方法,通过设置`dataType`为'jsonp'来启用这个功能。例如: ```javascript $.ajax({ url: 'http://otherdomain.com/data', dataType: 'jsonp', success:...

    jsonp跨域

    JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了...在开发过程中,你可能需要编辑`.classpath`和`.project`来配置项目环境,使用`build.xml`进行构建,以及在`src`目录下编写包含JSONP逻辑的Java代码。

    利用JQuery jsonp实现Ajax跨域请求json数据

    在Web开发中,由于浏览器的同源策略限制,JavaScript无法直接发起对不同源的HTTP请求。...在实际项目中,开发者可以根据需求选择合适的服务器端技术来配合jQuery的jsonp功能,实现灵活的数据交互。

    httpclient-4.5 jar包 和 jsonp jar包

    JSONP的工作原理是通过动态插入`&lt;script&gt;`标签,利用其可以跨域加载资源的特点,将回调函数名与服务器返回的JSON数据包裹在一起。服务器端生成的数据格式为`callback({key: value})`,其中`callback`是客户端预先...

    学习总结:前端跨域请求的解决办法——JSONP

    本文将深入探讨JSONP的工作原理以及如何在实际项目中应用。 ### JSONP简介 JSONP全称是"JSON Padding",它利用了`&lt;script&gt;`标签可以跨域加载资源的特性。因为`&lt;script&gt;`标签不受同源策略的约束,所以可以通过动态...

    Jsonp应用实例

    标题中的“Jsonp应用实例”指的是一个实际的项目或教程,展示了如何在实际开发中运用JSONP来解决跨域问题。描述中提到的学习文档是可运行的,这意味着可能包含了一个演示JSONP工作原理的代码示例,让学习者能够通过...

    jsonp异步

    标题“jsonp异步”指的是在JavaScript中使用JSONP进行异步数据请求的技术。JSONP的核心思想是动态插入`&lt;script&gt;`标签,其`src`属性指向提供服务的服务器端URL,这个URL会返回一段包含数据的JavaScript函数调用,...

    浅析JSONP技术原理及实现

    JSONP(JSON with Padding)是一种老旧的跨域数据访问技术,允许网页从不同的源请求...在未来的技术发展中,JSONP已被更安全和功能更强大的CORS技术取代,因此在新的项目中,应优先考虑使用CORS来处理跨域请求问题。

    jsonp XML解析

    JSONP(JSON with Padding)和XML解析是两种不同的数据交换格式和处理方式,在Web开发中都有广泛...总的来说,JSONP和XML解析在Web开发中各有其用武之地,开发者应根据项目需求和环境选择适合的数据交换和处理方式。

    VUE2.0中Jsonp的使用方法

    在VUE2.0项目中使用JSONP时,首先需要安装JSONP的npm包。使用npm安装命令: ```shell npm install jsonp --save ``` 然后在项目根目录下的`package.json`文件中添加依赖: ```json "jsonp": "^0.2.1" ``` 安装...

Global site tag (gtag.js) - Google Analytics