`

利用JSONP解决AJAX跨域问题的原理

阅读更多
什么是跨域?

简单的来说,出于安全方面的考虑,页面中的JavaScript无法访问其他服务器上的数据,即"同源策略"。而跨域就是通过某些手段来绕过"同源策略"限制,实现不同服务器之间通信的效果。

具体策略限制情况可看下表:

[表格.png]


什么是JSONP?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,而JSONP(JSON with Padding)则是JSON的一种"使用模式",通过这种模式可以实现数据的跨域获取。


JSONP跨域的原理

在"同源策略"下,在某个服务器下的页面是无法获取到该服务器以外的数据的,但img、iframe、script等标签是个例外,这些标签可以通过src属性请求到其他服务器上的数据。利用script标签的开放策略,我们可以实现跨域请求数据,当然,也需要服务端的配合。当我们正常地请求一个JSON数据的时候,服务端返回的是一串JSON类型的数据,而我们使用JSONP模式来请求数据的时候,服务端返回的是一段可执行的JavaScript代码。

举个例子,假如需要从服务器(http://justflyhigh.com/test.php?id=123)获取的数据如下:
1

{"id":123, "name":"张三", "age":17}

那么,使用JSONP方式请求(http://justflyhigh.com/test.php?id=123&callback=test)的数据将会是如下:
1

test({"id":123, "name":"张三", "age":17});

当然,如果服务端考虑的更加充分,返回的数据可能如下:
1

try{test({"id":123, "name":"张三", "age":17});}catch(e){ }

这时候我们只要定义一个test(data)函数,并创建一个script标签,使其的src属性为"http://justflyhigh.com/test.php?id=123&callback=test"即可调用返回的数据了。
1
2
3
4
5
6
7
8
9

<script type="text/javascript">
    function test(data){
        console.log(data);
    }
    var jsonp = document.createElement('script');
    jsonp.type = 'text/javascript';
    jsonp.src = 'http://justflyhigh.com/demo/test.php?id=123&callback=test';
    document.getElementsByTagName('head')[0].appendChild(jsonp);
</script>

示例运行结果:

[结果.png]
分享到:
评论

相关推荐

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

    本篇文章将详细讲解如何利用jQuery的jsonp方法实现Ajax跨域请求,以及如何在服务器端使用.Net的*.handler和WebService来返回JSON数据。 首先,理解JSONP的基本原理。JSONP是一种非官方的协议,通过动态创建`...

    jsonp json ajax跨域调用

    JSONP的工作原理是利用`&lt;script&gt;`标签不受同源策略限制的特点,通过动态创建并插入一个`&lt;script&gt;`标签来发起请求,然后服务器返回一个包含回调函数的JavaScript代码片段。 **JSONP的产生背景**主要是为了解决跨域...

    JSONP实现Ajax跨域访问

    ### JSONP实现Ajax跨域访问 #### 一、引言 JSONP(JSON with Padding)是一种用于解决跨域数据访问的技术。由于同源策略(Same-Origin Policy)的存在,JavaScript/Ajax只能请求同源的资源,这给需要跨域访问数据...

    解决ajax跨域问题

    根据提供的文件信息,本文将详细介绍如何通过JSONP等方法解决Ajax跨域问题。 #### Ajax与同源策略 首先,我们需要了解为什么会出现跨域问题。浏览器出于安全考虑,实施了一项名为“同源策略”的安全机制。同源策略...

    浅析JSONP解决Ajax跨域访问问题的思路详解

    JSONP是一种使用JSON数据的方式,返回的不是JSON对象,是包含JSON对象的javaScript脚本。接下来通过本文给大家介绍jsonp解决ajax跨域访问问题的思路,非常不错具有参考借鉴价值,感兴趣的朋友一起看下吧

    Ajax跨域请求解决方案-JSONP

    本文将详细介绍JSONP的工作原理以及如何在ASP.NET网站开发中应用JSONP解决Ajax跨域问题。 首先,理解JSONP的基本概念。JSONP是一种非官方的数据交换格式,它的核心思想是利用HTML中的`&lt;script&gt;`标签不受同源策略...

    深入浅析Jsonp解决ajax跨域问题

    为了有效理解JSONP解决Ajax跨域问题的知识点,我们首先需要明确几个关键概念: 1. **同源策略(Same-Origin Policy)**:这是浏览器安全策略的核心之一,用于控制不同源之间的文档或脚本的交互。一个“源”通常由...

    解决ajax跨域请求问题

    首先,理解“同源策略”是解决问题的关键。同源策略是浏览器为了保障网络安全而设定的一种机制,它禁止了一个源的文档或脚本访问另一个源的属性,这里的“源”指的是协议、域名和端口的组合。如果Ajax请求的目标URL...

    JSONP三种方式解决跨域问题

    1、地址...演示跨域问题以及跨子域名解决方法 2、地址http://a.test.com:8888/testAjaxCross/public/jsonp.do 演示jsonp解决跨域问题的三种方案jsonp、$getJSON、$ajax等

    js跨域解决方案

    本文将深入探讨JS跨域的解决方案,帮助开发者理解并解决这个问题。 首先,我们需要了解什么是同源策略。同源策略是浏览器为了保护用户数据安全而实施的一项机制,它限制了来自不同源的脚本之间进行交互。然而,这在...

    html通过 ajax jsonp跨域请求接收和传送数据

    1. **AJAX跨域**: 通常,AJAX请求受到同源策略限制。为实现跨域,我们可以使用CORS(Cross-Origin Resource Sharing)机制。服务器需要在响应头中添加`Access-Control-Allow-Origin`字段,允许特定的源进行跨域访问...

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

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

    Ajax跨域问题及其解决方案.docx

    ### Ajax跨域问题及其解决方案 #### 一、Ajax跨域问题概述 在现代Web开发中,前后端分离架构越来越流行。这种模式下,前端页面与后端服务通常部署在不同的服务器上,甚至可能位于不同的域名下。当浏览器发起对不同...

    Ajax跨域问题及解决方案(jsonp,cors)

    在前台通过动态添加script标签及src属性,表面看上去与ajax极为相似,但是,这和ajax并没有任何关系;为了便于使用及交流,逐渐形成了一中非正式传输协议,人们把它称作 jsonp 。 代码如下: html: &lt;body&gt; ...

    跨域访问解决方法-jsonp

    为了解决这个问题,开发者通常采用JSONP(JSON with Padding)技术。本文将详细探讨JSONP的工作原理以及如何在实际项目中使用它来跨域获取JSON数据。 ### JSONP简介 JSONP全称为"JSON Padding",它并不是JSON的一...

    PHP AJAX JSONP实现跨域请求使用范例_ajax如何解决跨域请求

    JSONP(JSON with Padding)是一种解决跨域请求的方法,即在客户端通过 script 标签请求服务器端的数据,然后服务器端将数据以 JSON 格式返回,并在返回数据中包含一个回调函数,以便客户端可以将数据处理。...

    ajax 跨域请求问题 jquery jsonp

    **Ajax跨域请求问题与jQuery JSONP解析** 在Web开发中,Ajax技术被广泛用于实现页面的异步更新,但浏览器的同源策略(Same-Origin Policy)限制了Ajax请求只能向同源(协议、域名、端口均相同)的服务器发送。这在...

    Ajax跨域访问解决方案

    本篇将详细介绍如何解决Ajax跨域访问的问题。 1. **什么是同源策略** 同源策略是浏览器为了保护用户安全而实施的一项安全策略,它限制了来自不同源的“文档”或脚本对彼此的交互。在没有明确许可的情况下,...

    php版 解决跨域问题CORS ajax+get,post+jsonp例子源代码.zip

    JSONP的基本原理是利用`&lt;script&gt;`标签不受同源策略限制的特性,通过动态创建`&lt;script&gt;`标签来请求数据。服务器返回的不是JSON数据,而是包裹在函数调用中的JSON数据,例如: ```javascript callback({key: 'value'}...

Global site tag (gtag.js) - Google Analytics