什么是JSONP协议?
JSONP即JSON with Padding。由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源。如果要进行跨域请求,我们可以通过使用html的script标记来进行跨域请求,并在响应中返回要执行的script代码,其中可以直接使用JSON传递javascript对象。这种跨域的通讯方式称为JSONP。
很明显,JSONP是一种脚本注入(Script Injection)行为,需要特别注意其安全性。
在asp.net中实现简单的JSONP非常简单。我们需要两个页面,分别承担协议的客户端和服务器端角色。
假设我们有两个站点,http://www.baa.com.cn 和 http://www.bitauto.com
我们的客户端页面为 http://www.baa.com.cn/JSONPClient.aspx ;而我们的服务器端页面为 http://www.bitauto.com/JSONPServer.aspx 。
首先,我们来做客户端页面:
==========Javascript代码段1:JSONP客户端发送请求的方法=================
function CallJSONPServer(url){ // 调用JSONP服务器,url为请求服务器地址
var oldScript =document.getElementById(url); // 如果页面中注册了调用的服务器,则重新调用
if(oldScript){
oldScript.setAttribute("src",url);
return;
}
var script =document.createElement("script"); // 如果未注册该服务器,则注册并请求之
script.setAttribute("type", "text/javascript");
script.setAttribute("src",url);
script.setAttribute("id", url);
document.appendChild(script);
}
------------------END------------------------
===========Javascript代码段2:JSONP客户端对服务器开放的接口方法=======================
function OnJSONPServerResponse(obj){
alert(obj);
}
------------------END------------------------
===========HTML代码段1:JSONP客户端向用户提供的UI===============
<input type="button" onclick="CallJSONPServer('http://www.bitauto.com/JSONPServer.aspx')" />
------------------END------------------------
至此,JSONP客户端完成,接下来我们做JSONP服务器端页面:
============C#代码段1:应答JSONP客户端请求================
protected void Page_Load(object sender, EventArgs e)
{
Response.DisableKernelCache();
Response.Cache.SetNoStore();
Response.Write("OnJSONPServerResponse('" + DateTime.Now.ToString() + "');");
Response.End();
}
------------------END------------------------
OK,我们现在就完成了,您不妨自己实践一下。
相关推荐
这个本地实现的最简单jsonp例子旨在帮助初学者更好地理解这一概念。 首先,我们要明确的是,JavaScript通常受到同源策略的限制,即只能访问与自身同源(协议、域名、端口相同)的资源。但`<script>`标签是个例外,...
cy-jsonp库的使用相当简单。首先,需要引入该库,可以是通过CDN或者下载到本地。然后,调用`cy.jsonp`函数,传入必要的参数。例如: ```javascript cy.jsonp({ url: 'http://example.com/data?callback=?', ...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了HTML中`<script>`标签可以跨域请求...随着CORS(跨源资源共享)的普及,JSONP的重要性逐渐被CORS取代,但理解JSONP的工作原理对于前端开发者仍然很重要。
本文将深入探讨如何使用原生JavaScript实现一个简单的AJAX库,特别关注JSONP的实现。 首先,理解JSONP的基本原理是关键。JSONP利用了HTML中`<script>`标签不受同源策略限制的特点,通过动态创建`<script>`元素并...
首先,理解JSONP的基本原理是至关重要的。JSONP的工作机制是,前端通过`<script>`标签的`src`属性向服务器发起请求,服务器接收到请求后,返回一个JavaScript函数调用,函数名由前端指定,参数是JSON格式的数据。...
Ajax和jsonp是Web开发中用于实现前后端数据交互的两种技术。它们能够在不刷新整个页面的情况下,从前端向服务器发送请求并获取数据,实现页面的局部更新,显著提升用户体验。下面将详细介绍这两项技术,并通过实例...
我们可以看到,JSONP的工作原理在于它的请求实质上是获取了一个脚本文件,而不是一个真正的AJAX请求。所以,JSONP无法用于POST请求,只能用于GET请求。 现在,我们来具体分析一下本文中提供的代码片段: 1. 服务器...
JSONP的工作原理可以简单概括为以下步骤: 1. **客户端**:在客户端(通常是网页)上,通过`<script>`标签向服务器发送请求。由于`<script>`标签没有同源策略限制,它可以加载任何源的JavaScript代码。 2. **动态...
在介绍JSONP原理之前,我们需要先了解同源策略。同源策略是浏览器的一种安全机制,限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。例如,一个域下的JavaScript脚本不能读取另一个域下的文档...
### JSONP原理 1. **请求发起**:客户端(通常是浏览器中的JavaScript)创建一个`<script>`标签,其`src`属性指向服务端提供的JSONP接口,接口URL通常会包含一个回调函数名参数,例如`callback=myCallback`。 2. *...
对于简单的场景,JSONP可能是最快捷的解决方案。而对于需要更加安全和灵活的跨域交互,CORS会是一个更好的选择。如果服务端处于我们的控制之下,利用PHP等脚本语言实现跨域请求也是一个可行的方案。然而,要注意的是...
在这个实例中,我们看到一个简单的JSONP请求的实现。首先,让我们分析客户端代码: ```html function aa() { $.ajax({ url: "http://localhost:12079/WebForm2.aspx", data: "p1=1&p2=2&callback=?", type: ...
jQuery是目前最流行的JavaScript库之一,它简化了JavaScript编程,提供了AJAX函数以及对JSONP的支持。下面,我们就详细讲解jQuery中JSONP的使用方法,以及如何解决常见问题。 首先,JSONP的工作原理基于动态创建`...
### 解决Ajax跨域问题 在现代Web开发中,跨域问题...总之,理解和掌握JSONP的基本原理和实现方法对于前端开发者而言是非常重要的。同时,也要关注其他更先进的跨域解决方案,以便在实际项目中选择最合适的技术手段。
#### 三、JSONP原理及使用 **JSONP**是一种绕过同源策略的技术,它利用了`<script>`标签不受同源策略限制的特点。当使用JSONP进行跨域请求时,客户端会向服务器端发送一个请求,并在URL中附加一个回调函数名作为参数...
#### 三、JSONP原理及示例 为了解决跨域问题,JSONP(JSON with Padding)是一种常用的解决方案。JSONP的基本原理是在客户端创建一个`<script>`标签,并将其`src`属性设置为目标服务器的URL,这样就可以绕过同源...
文章中提到的jQuery.getScript方法是一个简单的例子,展示了如何使用jQuery的getScript方法来实现JSONP跨域请求。在使用时,jQuery会自动为请求的URL添加一个随机的查询参数,比如`_=***`,这是为了避免浏览器缓存...
原理很简单:客户端向服务器请求数据时,会传递一个回调函数名作为参数。服务器将数据放在这个回调函数中返回给客户端,客户端通过定义的回调函数来处理返回的数据。这样就绕开了同源策略的限制,实现了跨域数据传输...