angular4中jsonp跨域请求时,后台返回417报错的问题

http请求代码如下

myJsonp(url, options = {}) {
        options['params']['callback'] = `__ng_jsonp__.__req${this.count}.finished`;
        console.log(options);
        this.count++;
        return this.jsonp.get(url, options)
            .catch(err => {
                return Observable.throw(err);
            });
    }

对于200的请求是可以正常处理的,返回的数据如下

__ng_jsonp__.__req0.finished({message: "success", code: 0, status_code: 200, data: {,…}});

但是如果417报错的情况下,jsonp捕捉不到报错信息,http请求的status也是200

图片描述
这是catch中抓到的err,本应该是417,但是status是200
下图是network中直接打开接口拿到的数据,可以看到接口确实是417了的
图片描述

因为jsonp用的不多,所以机制不是很了解

是jsonp不接受这种后台的报错机制还是后台的报错有特殊的格式,
希望大佬们可以帮忙解惑一下

阅读 2.4k
1 个回答

jsonp不能识别417,422这种逻辑报错,只要请求成功,不管后台返回什么错误,都是200,所以通过加status_code解决问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进