Web安全—(三)JSONP跨域解决方案

首先,在学习JSONP前,先了解什么是JSON:

JSON(JavaScript Object Notation):是一种轻量级的数据交互格式,采用完全独立于编程语言的文本格式来存储和表示数据。JSON易于阅读和编写,同时也易于机器解析和生成(一般用于和提升网络传输效率)

什么是JSONP?

JSONP(JSON with Padding)是一种民间提出的跨域解决方案,通过客户端的scrip标签发出的请求方式。(script标签:主要用于从服务器端加载一段JavaScript脚本并在当前页面中执行)

JSONP的原理:通过添加一个<script>标签,向服务器请求JSON数据,这样就不受同源策略的限制。(同源策略:所谓同源,就是协议、域名、端口都要一致,任意一个不同就算跨域。它是一种约定,是浏览器最核心也是最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能都会受到影响)

因为JSON的纯字符数据格式可以简洁的描述复杂数据,且JSON还被JS原生支持,所以在客户端几乎可以随心所欲的处理这种格式的数据;JOSNP协议的一个要点就是允许用户传递一个callbank(回调函数)参数给服务端,然后服务端返回数据时会将这个callbank参数作为函数名包裹在JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。

JSONP的优缺点:

优点:

兼容性比较好,可以用于解决浏览器的跨域数据访问的问题;不受同源策略的限制,在请求完毕后可以通过调用callbank的方式回传结果。

缺点:

仅支持GET请求;具有局限性,不安全,可能会受到XSS攻击;只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间进行JavaScript调用的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值