JSONP原理小记

大家都知道JSONP(JSON with padding参数式JSON)是跨域传输数据的方法,jq等很多类库都封装了JSONP的方法,但是他的原理是怎样的呢?下面举个我认为最浅显的栗子,大家看过了都会明白原理!

JSONP的原理,概括点说,就是动态插入<script>元素,当然<script>元素引用的js文件是服务器传过来的,他与<img>元素一样可以不受限制地从其他域加载资源。

栗子:

<!DOCTYPE html><html>
<head>
    <title></title>
    <script type="text/javascript">
    // 定义回调函数
    var alertMessage = function(data){
        alert(‘ 姓名: ‘ + data.name + ‘,性别: ‘ + data.sex + ‘,职位:‘+ data.position);
    };  
    // 提供jsonp服务的url地址(即动态<script>元素的src值)
    var url = "http://test.com/jsonp?number=9527&callback=alertMessage";
    // 创建script标签,设置其属性
    var script = document.createElement(‘script‘);
    script.src = url;
    // 把script标签加入head,此时调用开始
    document.getElementsByTagName(‘head‘)[0].appendChild(script);
    </script>
</head>
<body>

</body>
</html>

服务器传过来的js文件栗子:

alertMessage({
    ‘name‘:‘James‘,
    ‘sex‘:‘male‘,
    ‘position‘:‘manager‘
})

加载到服务器传过来的js文件后,解析,执行函数alertMessage!

弹出提示框:姓名:James,性别:male,职位:manager

看到这里,大家应该清楚了,JSONP的使用流程:

1、定义一个调用跨域数据的函数 function fn(date){...};

2、在需要执行fn时,插入<script>标签,其src属性为请求地址;

3、服务器返回js文件,其代码执行函数fn,并提供参数,即fn(response),此处,response就是跨域调用的数据!

时间: 2024-11-26 13:03:19

JSONP原理小记的相关文章

Ajax跨域:Jsonp原理解析

推荐先看下这篇文章:JS跨域(ajax跨域.iframe跨域)解决方法及原理详解(jsonp) JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略).这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容. JavaScript这个安全策略在进行多iframe或多窗口编程.以及Ajax编程时显得

JSONP原理及jQuery中的使用

JSONP原理 JSON和JSONP JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,用于在浏览器和服务器之间交换信息. JSONP(JSON With Padding),就是打包在函数调用中的的JSON(或者包裹的JSON). JSON是一种数据格式,JSONP是一种数据调用方式. 1 //JSON 2 3 { 4 5 “name”: “sb” 6 7 } 1 //JSONP 2 3 callback({ 4 5 “name”: “sb” 6 7 }

跨域JSONP原理及调用具体示例

上篇博客介绍了同源策略和跨域访问概念,其中提到跨域常用的基本方式:JSONP和CORS. 那这篇博客就介绍JSONP方式. JSONP原理 在同源策略下,在某个服务器下的页面是无法获取到该服务器以外的数据的,但img.iframe.script等标签是个例外,这些标签可以通过src属性请求到其他服务器上的数据. 而JSONP就是通过script节点src调用跨域的请求. 当我们通过JSONP模式请求跨域资源时,服务器返回给客户端一段javascript代码,这段javascript代码自动调用客

跨域JSONP原理及调用详细演示样例

上篇博客介绍了同源策略和跨域訪问概念,当中提到跨域经常使用的基本方式:JSONP和CORS. 那这篇博客就介绍JSONP方式. JSONP原理 在同源策略下,在某个server下的页面是无法获取到该server以外的数据的,但img.iframe.script等标签是个例外.这些标签能够通过src属性请求到其它server上的数据. 而JSONP就是通过script节点src调用跨域的请求. 当我们通过JSONP模式请求跨域资源时,server返回给client一段javascript代码,这段

解决Ajax 跨域问题 - JSONP原理解析

解决Ajax 跨域问题 - JSONP原理解析 为什么会有跨域问题? - 因为有同源策略 同源策略是浏览器的一种安全策略,所谓同源指的是 请求URL地址中的 协议, 域名 和 端口 都相同,只要其中之一不相同就是跨域 同源策略主要为了保证浏览器的安全性 在同源策略下,浏览器**不允许**Ajax跨域获取服务器数据 http://www.example.com/detail.html 跨域请求: http://api.example.com/detail.html 域名不同 http://www.

AJAX(六)jsonp原理详解

一.什么是jsonp? 先别管什么叫jsonp,我们先来看一个小问题,看完这个问题你就知道jsonp是要解决什么问题的,自然也就明白什么是jsonp了. 问题: 之前做的例子如果在同一个域名下运行时是非常正常的,但如果这个数据接口是在A域名下,而使用了AJAX请求的静态页运行在B域名下,我们就会发现点击按钮发出请求时会报错.截个图来看看. 我们看到后台的一般处理程序运行的域名是 : http://localhost:64113 现在使用VS重新创建1个web项目,然后在这个使用AJAX方式发出请

JSONP原理及其简单封装

什么是JSONP 1.一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面.动态网页.web服务.WCF,只要是跨域请求,一律不准: 2.不过我们又发现,Web页面上调用js文件时则不受是否跨域的影响(不仅如此,我们还发现凡是拥有"src"这个属性的标签都拥有跨域的能力,比如<script>.<img>.<iframe>): 3.于是可以判断,当前阶段如果想通过纯web端(ActiveX控件.服务端代理.属于未来的H

跨域及JSONP原理

什么是跨域:a.com 域名下的js无法操作b.com或是c.a.com域名下的对象 为什么浏览器要引入跨域问题? 跨域问题来源于浏览器的同源策略,为啥要有这个策略呢? 为了安全.假设现在有a.com 和b.com 两个域,如果没有同源策略的限制,那么a.com就可以随随便便就去b.com 里面拿东西,甚至一些cookie信息(常用于存储登录信息),那么a.com只需要一段代码就可以获取你的cookie信息,从而冒充你的身份去登录网站. 当使用 AJAX 跨域访问资源 会受到同源策略影响,浏览器

js跨域请求方式 ---- JSONP原理解析

这篇文章主要介绍了js跨域请求的5中解决方式的相关资料,需要的朋友可以参考下 跨域请求数据解决方案主要有如下解决方法: 1 2 3 4 5 JSONP方式 表单POST方式 服务器代理 Html5的XDomainRequest Flash request 分开说明: 一.JSONP: 直观的理解: 就是在客户端动态注册一个函数 function a(data),然后将函数名传到服务器,服务器返回一个a({/*json*/})到客户端运行,这样就调用客户端的 function a(data),从而