ITPub博客

首页 > > > jsonp全方位解析

jsonp全方位解析

作者:25minutes 时间:2019-09-24 09:34:37 0 删除 编辑

同源策略

  • 浏览器的一种安全策略,所谓同源,指的是域名、协议、端口号完全相同
  • 限制:cookie、localStorage和IndexDB无法读取;无法操作跨域的iframe里的dom元素;Ajax请求不能发送

jsonp原理

本质是利用了标签(link,img,script,这里使用script)具有可跨域的特性,由服务端返回预先定义好的javascript函数的调用,并且将服务端数据以该函数参数的形式传递过来


前端javascript代码

<script>
 function fuc(data){
 console.log(data.name);
 }
</script>
<script src="http://www.baidu.com/api.php?callback=fuc"></script>


后端php代码

<?php
 $cb = $_GET['callback'];
 $data = array(
 'name'=> 'zs',
 'age'=>18,
 'gender'=>true
 );
 echo $cb.'('.json_encode($data).')';
?>


jsonp优点

完美解决在测试或者开发中获取不同域下的数据,用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了


jsonp缺点

  • jsonp只支持get请求而不支持post请求
  • 用session来判断当前用户的登录状态,跨域时会出现问题
  • jsonp存在安全性问题


特别注意

  • 防止callback参数意外截断js代码,特殊字符单引号双引号,换行符存在风险
  • 防止callback参数恶意添加script标签,造成xss漏洞
  • 防止跨域请求滥用,阻止非法站点恶意调用


前端圈

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4328/viewspace-3119099/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-17

  • 博文量
    336
  • 访问量
    14936