JSONP概念
JSONP(JSON with Padding)
是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。
由于同源策略,协议+IP+端口有任意不同都会导致请求跨域,而 HTML 的<script>
元素是一个例外。 利用
<script>
元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料。
JSONP劫持流程
- 用户在网站B 注册并登录,网站B 包含了用户的id,name,email等信息;
- 用户通过浏览器向网站A发出URL请求
- 网站A向用户返回响应页面,响应页面中注册了JavaScript的回调函数和向网站B请求的
<script>
标签 - 用户收到响应,解析JS代码,将回调函数作为参数向网站B发出请求
- 网站B接收到请求后,解析请求的URL,以JSON格式生成请求需要的数据,将封装的包含用户信息的JSON数据作为回调函数的参数返回给浏览器
- 网站B数据返回后,浏览器则自动执行
Callback
函数对步骤4返