跨域详解之jsonp

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38704338/article/details/79352221

jsonp是非官方协议,意思就是它是一种默认的约定的形式。

它是用来解决跨域问题的。

它需要改动后台代码。

下面来讲解jsonp的原理。

    看一下jsonp发出的请求长啥样吧。


    红色的就是jsonp请求,这里很明显type是script形式的,与我们引用js文件的类型是一样的。js文件没有同源要求。所以jsonp是模仿这种形式。

    jsonp是一种约定,可以发现请求的链接里有一个callback=jQuery113......这个就是约定所在。

后台代码是这样。


    可以看到后台如果发现有callback=....时候认为是jsonp形式,那么他就会返回一个js碎片。


可以看到jsonp的请求为localhost:8080/test/get?callback=jQuery11103....&_1511...

后面的&是时间戳,防止浏览器缓存。

返回的很明显不是json数据。而是一段js代码。方法名为jsonp请求链接中callback=后面的参数。括号内参数为后台返回的数据。

这就是jsonp的原理。

总结:jsonp采用约定的形式,在链接中添加callback参数,后台识别到约定数据后,将数据以js碎片文件的形式返回给前台,js中方法名为请求的callback参数。

jsonp解决跨域问题的弊端

     服务器要改动
只支持get方法。

猜你喜欢

转载自blog.csdn.net/weixin_38704338/article/details/79352221