补充一下:
jsonp其实在跨域原理上跟js更近,它要求服务端返回一段带有object的js代码,然后利用js标签里的src默认没有跨域限制的特性(准确来讲是网页没配置csp的话没有跨域限制,但同时也牺牲了一部分安全性),用src来加载,这样就能获取到object里的数据了。同时,由于是和json一脉相承的js.object,jQ让代码看上去像是在加载json……哈哈…(什么鬼)?
CORS方式则要求服务端返回的时候要带个CORS头,标明允许跨域访问的域(当然也可以图省事用通配符*),但我个人觉得如果本域有能力控制后端的话,配置个转发代理是个更好的选择,因为这样前端就不存在跨域问题了。转发代理可以用Nginx做,另外可能在域名解析那里设置URL转发应该也行(最近刚发现的,万网有URL显式/隐式转发,不过还没试过)。
如大家遇见类似问题,不妨一试!