JSONP跨域

jQuery jsonp跨域请求(很详细)

json和jsonp的使用区别

跨域请求的几种方式

 

跨域:

同一域名,不同端口

同一域名,不同协议

域名及域名对应的IP

根域名、二级域名

不同域名

JSONP跨域
 

首先我们需要明白,在页面上直接发起一个跨域的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方式了,那就请求不了了】。