jsonp 是一种非正式的传输协议(数据的调用方式),是解决跨域请求的一种常规方式。它和json的区别是json是一种纯文本,跨平台和语言的数据描述格式。
跨域
跨域,指浏览器因为同源策略,不能执行其他网站的脚本。
同源策略是浏览器的一种安全机制,防止用户信息窃取,判断两个网站是否同源,必须满足三个数据完全一致:协议,域名,端口。
原理
jsonp是利用script标签请求js文件时添加callback参数,在服务器返回数据时,通过该参数作为函数名称包裹json数据返回浏览器,然后按照常规方式处理数据。
使用
我们现在创建两个跨域文件
(a) demo.html 保存localhost:3000
(b) testCallback.js 保存 https://io.github.com
testCallback.js
testCallback({
name:'bojue'
});
我们通过jsonp可以完成js对浏览器的跨域请求,一般有两种常用的调用方式:
第一种是直接使用script标签添加callback参数的方式
第二种是调用Jquery库的ajax方法。
1.script标签
demo.html 一段js文件
function testCallback(data) {
console.log(data) // name: bojue
}
var ele = document.createElement("script");
ele.type = "text/javascript";
ele.src = "https://io.github.com?callback=testCallback";
document.getElementsByTagName("head")[0].appendChild(ele);
2.ajax
demo.html 一段js文件,前提引入了Jquery库
$.ajax({
url: "https://io.github.com",
dataType: "JSONP",
jsonpCallback: 'testCallback',
success: function(data){
console.log(data);
}
});
欢迎访问: 个人主页
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。