什么是跨域?
简单的来说,出于安全方面的考虑,页面中的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跨域请求,以及如何在服务器端使用.Net的*.handler和WebService来返回JSON数据。 首先,理解JSONP的基本原理。JSONP是一种非官方的协议,通过动态创建`...
JSONP的工作原理是利用`<script>`标签不受同源策略限制的特点,通过动态创建并插入一个`<script>`标签来发起请求,然后服务器返回一个包含回调函数的JavaScript代码片段。 **JSONP的产生背景**主要是为了解决跨域...
### JSONP实现Ajax跨域访问 #### 一、引言 JSONP(JSON with Padding)是一种用于解决跨域数据访问的技术。由于同源策略(Same-Origin Policy)的存在,JavaScript/Ajax只能请求同源的资源,这给需要跨域访问数据...
根据提供的文件信息,本文将详细介绍如何通过JSONP等方法解决Ajax跨域问题。 #### Ajax与同源策略 首先,我们需要了解为什么会出现跨域问题。浏览器出于安全考虑,实施了一项名为“同源策略”的安全机制。同源策略...
JSONP是一种使用JSON数据的方式,返回的不是JSON对象,是包含JSON对象的javaScript脚本。接下来通过本文给大家介绍jsonp解决ajax跨域访问问题的思路,非常不错具有参考借鉴价值,感兴趣的朋友一起看下吧
本文将详细介绍JSONP的工作原理以及如何在ASP.NET网站开发中应用JSONP解决Ajax跨域问题。 首先,理解JSONP的基本概念。JSONP是一种非官方的数据交换格式,它的核心思想是利用HTML中的`<script>`标签不受同源策略...
为了有效理解JSONP解决Ajax跨域问题的知识点,我们首先需要明确几个关键概念: 1. **同源策略(Same-Origin Policy)**:这是浏览器安全策略的核心之一,用于控制不同源之间的文档或脚本的交互。一个“源”通常由...
首先,理解“同源策略”是解决问题的关键。同源策略是浏览器为了保障网络安全而设定的一种机制,它禁止了一个源的文档或脚本访问另一个源的属性,这里的“源”指的是协议、域名和端口的组合。如果Ajax请求的目标URL...
1、地址...演示跨域问题以及跨子域名解决方法 2、地址http://a.test.com:8888/testAjaxCross/public/jsonp.do 演示jsonp解决跨域问题的三种方案jsonp、$getJSON、$ajax等
本文将深入探讨JS跨域的解决方案,帮助开发者理解并解决这个问题。 首先,我们需要了解什么是同源策略。同源策略是浏览器为了保护用户数据安全而实施的一项机制,它限制了来自不同源的脚本之间进行交互。然而,这在...
1. **AJAX跨域**: 通常,AJAX请求受到同源策略限制。为实现跨域,我们可以使用CORS(Cross-Origin Resource Sharing)机制。服务器需要在响应头中添加`Access-Control-Allow-Origin`字段,允许特定的源进行跨域访问...
本文将探讨如何利用JavaScript的跨域原理来解决这个问题。 首先,我们要理解什么是跨域。跨域是指一个源(Origin,由协议、域名和端口组成)试图访问另一个源的资源时,如果这两个源不相同,就会被浏览器视为跨域,...
### Ajax跨域问题及其解决方案 #### 一、Ajax跨域问题概述 在现代Web开发中,前后端分离架构越来越流行。这种模式下,前端页面与后端服务通常部署在不同的服务器上,甚至可能位于不同的域名下。当浏览器发起对不同...
在前台通过动态添加script标签及src属性,表面看上去与ajax极为相似,但是,这和ajax并没有任何关系;为了便于使用及交流,逐渐形成了一中非正式传输协议,人们把它称作 jsonp 。 代码如下: html: <body> ...
为了解决这个问题,开发者通常采用JSONP(JSON with Padding)技术。本文将详细探讨JSONP的工作原理以及如何在实际项目中使用它来跨域获取JSON数据。 ### JSONP简介 JSONP全称为"JSON Padding",它并不是JSON的一...
JSONP(JSON with Padding)是一种解决跨域请求的方法,即在客户端通过 script 标签请求服务器端的数据,然后服务器端将数据以 JSON 格式返回,并在返回数据中包含一个回调函数,以便客户端可以将数据处理。...
**Ajax跨域请求问题与jQuery JSONP解析** 在Web开发中,Ajax技术被广泛用于实现页面的异步更新,但浏览器的同源策略(Same-Origin Policy)限制了Ajax请求只能向同源(协议、域名、端口均相同)的服务器发送。这在...
本篇将详细介绍如何解决Ajax跨域访问的问题。 1. **什么是同源策略** 同源策略是浏览器为了保护用户安全而实施的一项安全策略,它限制了来自不同源的“文档”或脚本对彼此的交互。在没有明确许可的情况下,...
JSONP的基本原理是利用`<script>`标签不受同源策略限制的特性,通过动态创建`<script>`标签来请求数据。服务器返回的不是JSON数据,而是包裹在函数调用中的JSON数据,例如: ```javascript callback({key: 'value'}...