关键词:
JSONP(JSON with Padding) 是 JSON 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。
JSONP本质
由于浏览器的同源策略,会阻止Ajax请求,但是不会阻止<script src=""></script>
,因此就可以通过<script src=""></script>
的方式发送请求。
注意:JSONP只能发送GET请求
JSONP数据格式
为了配合通过<script>
发送请求,服务器端返回的数据应为JSONP格式:
callbackFunction(数据)
因为通过<script src=""></script>
发送请求就等于将服务器返回的数据直接放入了<script></script>
代码块中,所以服务器需要返回JS格式的数据,一般返回一个回调函数,然后将要发送给浏览器的数据当作参数传给函数,并且浏览器需要先定义一个函数供服务器调用。
示例:
.html:
<body>
<input type="button" id="get-JSONP" value="get" />
</body>
<script src="/static/jQuery3.4.1.js"></script>
<script src="/static/get_jsonp.js"></script>
get_jsonp.js:
$('#get-JSONP').click(function ()
var tag = document.createElement('script');
tag.src = 'http://www.jxntv.cn/data/jmd-jxtv2.html?callback=list&_=1454376870403';
document.head.appendChild(tag);
document.head.removeChild(tag);
);
function list(arg)
console.log(arg);
通过这个示例就可以清晰地看出JSONP的原理
通过jQuery发送请求
示例
get_jsonp.js:
$('#u-get').click(function ()
$.ajax(
url: 'http://www.jxntv.cn/data/jmd-jxtv2.html?callback=list&_=1454376870403',
type: 'GET',
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'list'
)
function list(arg)
console.log(arg);
请求类型可以使用POST,但是其实内部仍然将POST转换为GET
javascript原生实现jsonp(代码片段)
[jsonp]关于jsonp的几个点(代码片段)
关于JSONP今天学习到了JSONP,关于JSONP的定义和用法在阮一峰阮老师的博客里讲解得很清楚了,这里只是记录一些关于JSONP的点。回调函数的命名在阮老师的博客中举的例子是回调函数命名为foo,在实际使用环境中回调函数一般是... 查看详情
jsonp(代码片段)
JSONP(JSONwithPadding)是JSON的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。JSONP本质由于浏览器的同源策略,会阻止Ajax请求,但是不会阻止<scriptsrc=""></script>,因此就可以通... 查看详情
r用r解析jsonp(代码片段)
ajax解决跨域--jsonp原理(代码片段)
1.解决跨域–JSONP1.1JSONP是什么JSONP(JSONwithPadding),是一个非官方的跨域解决方案,纯粹凭借程序员的聪明才智开发出来,只支持get请求。1.2JSONP怎么工作的?在网页有一些标签天生具有跨域能力,比如:imglin... 查看详情
htmljquery,json:使用jsonp的基本jquery示例(代码片段)
jsonp原理详解(代码片段)
先说说JSONP是怎么产生的:1、一个众所周知的问题,ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态页面、web服务、WCF,只要是跨域请求,一律不准。2、不过我们又发现,web页面上调用js文件时则不... 查看详情
jsonp原理及实现(代码片段)
JSONP原理及实现1概述2优点3缺点4实现1概述JSONP是是一种跨域通信的手段,它可以让网页从别的域名(网站)中获取数据,即跨域读取数据,兼容性好,但是只能处理GET请求。它的原理是利用script标签的src属... 查看详情
html进行jsonp调用并将其保存在sessionstorage中(代码片段)
ajax解决跨域--jquery发送jsonp请求(代码片段)
1.jQuery发送jsonp请求需求在"点击发送jsonp请求"后,将服务器返回的响应体渲染到窗口中。ajaxDemo.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname= 查看详情
xss结合jsonp获取网站访客社交账号信息(代码片段)
...入2个外部JavaScript文件。第一个是jQuery库,第二个是jsonp代码。在实际渗透中,如果该网站存在存储型XSS漏洞,我们就可以将 查看详情
封装一个简单的jsonp(代码片段)
简单来说通过script标签的src属性,src属性不仅仅可以写JS文件,可以请求任意文件。jsonp是通过JS这一特点实现,并添加async(异步属性)。当我们用src请求一下后台文件(例如:php)。1.如果我们在PHP文件中返回来的是vardata=1一条... 查看详情
php带有jquerygetjson(回调)的jsonp公共api(mysql)(代码片段)
jsonp原理及其简单封装(代码片段)
什么是JSONP1、一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,一律不准;2、不过我们又发现,Web页面上调用js文件时则不受是否跨域的影... 查看详情
前端面试--ajax和jsonp跨域(代码片段)
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metanam 查看详情
jsonp跨域详解+模拟百度搜索(代码片段)
JSONP跨域一、什么是JSONP二、JSONP跨域请求三、模拟百度搜索四、JSONP缺点一、什么是JSONP JSONP是JSONwithpadding(填充式JSON或参数式JSON)的简写,是应用JSON的一种新方法,在后来的Web服务中非常流行,J... 查看详情
ajax解决跨域--原生jsonp实践(代码片段)
1.原生jsonp实践需求:验证用户名是否存在,如果用户名不存在,则在失去焦点的时候边框变红。ajaxDemo.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname 查看详情
ajax基础4--什么是跨域以及如何解决跨域(代码片段)
同源策略和jsonp同源策略(⭐⭐⭐)什么是同源什么是同源策略跨域(⭐⭐⭐)什么是跨域浏览器对跨域请求的拦截如何实现跨域数据请求`JSONP`什么是`JSONP`(⭐⭐⭐)`JSONP`的实现原理(⭐⭐⭐)自己实现一个简单的`JSO... 查看详情