跨域方法(2)-jsonp跨域

2018-12-12  本文已影响0人  牛奶大泡芙

jsonp是跨域方法的一种,就是json pending,即对json的补充。
jsonp是一种特殊的协议,前后台约定了get方法的参数,默认callback,后台会把原本的json对象换成js代码,返回给前端,js代码中的函数是callback对应参数,js代码中的参数是后台json数据
jsonp虽然是利用script标签的src属性,不受浏览器同源策略的检查,但是仍然需要后台的配合
比如在java spring框架中,后台需要对callback参数名进行规定

@ControllerAdvice
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice
  public JsonpAdvice() {
    super("callback"); // 意味着前端get请求参数是“callback”
  }

比如ajax自动生成的script标签

$.ajax ({
  url: base + '/get',
  jsonp: 'callback',
  dataType: 'jsonp',
  success: function(json) {
  }
})

发出这个jsonp请求之后,html会在head中插入一个script标签

<script async src="http://localhost:8080/get?callback=jquery123&_=123"></script>

jsonp的弊端是
1、请求的类型不是xhr,而是script
2、仅支持get请求
3、后台要相应修改,支持callback参数

上一篇 下一篇

猜你喜欢

热点阅读