在开发过程中,跨域请求数据是很常见的操作,一般我们会用jsonp来解决(还有其他技术,目前还不会。)
那么什么是跨域?
常见跨域场景:
URL 说明 是否允许通信
http://www.domain.com/a.js
http://www.domain.com/b.js 同一域名,不同文件或路径 允许
http://www.domain.com/lab/c.js
http://www.domain.com:8000/a.js
http://www.domain.com/b.js 同一域名,不同端口 不允许
http://www.domain.com/a.js
https://www.domain.com/b.js 同一域名,不同协议 不允许
http://www.domain.com/a.js
http://192.168.4.12/b.js 域名和域名对应相同ip 不允许
http://www.domain.com/a.js
http://x.domain.com/b.js 主域相同,子域不同 不允许
http://domain.com/c.js
http://www.domain1.com/a.js
http://www.domain2.com/b.js 不同域名 不允许
json和jsonp的区别:
1.json返回一串数据,jsonp返回脚本代码(包含一个函数调用)
2.jsonp只支持get请求,没有post
用法:
就是很普通的ajax格式:
1 $.ajax({ 2 dataType: "jsonp", //看这里~ 3 crossDomain: true, 4 url: xxxxxxxxxxxxxxxxxx, 5 scriptCharset:"UTF-8", 6 jsonpCallback : 'xxxxxx', //自定义回调函数名 ,默认jquery自动生成 7 timeout: xxxxxxxxx, 8 success: function(xxx) { 9 10 xxxxxxxx 11 12 }, 13 14 error: function(zzz) { 15 zzzzzzzzz 16 } 17 });