JSONP跨域
跨域:
同一域名,不同端口
同一域名,不同协议
域名及域名对应的IP
根域名、二级域名
不同域名
首先我们需要明白,在页面上直接发起一个跨域的ajax请求是不可以的,但是,在页面上引入不同域上的js脚本却是可以的,就像你可以在自己的页面上使用<img src=""> 标签来随意显示某个域上的图片一样。
比如我在8080端口的页面上引入一个9090端口的图片:可以看到直接通过src跨域请求是可以的。
即a 域的js不能直接访问 b域名的信息,但是script 标签的src属性可以跨域引用文件。
jsonp是请求之后后台包装好一段json,并且把数据放在一个callback函数,返回一个js文件,动态引入这个文件,下载完成js之后,会去调用这个callback,通过这样访问数据。
看调用结果,发现,请求时带的参数是:callback=showData;调用回调函数的时候,先调用了指定的showData,然后再调用了success。
缺点:
jsonp方式不支持POST方式跨域请求,就算指定成POST方式,会自动转为GET方式;而【后端如果设置成POST方式了,那就请求不了了】。