由於同源策略的存在,特別是前后端兩個項目存在的情況下,客戶端訪問服務端必然存在跨域的情況,而使用jsonp,則不存在這個問題。
主要是因為jsonp是在頁面中插入一段js代碼,而請求返回的也是一段js代碼,插入到頁面中。
與json請求的差別是jsonp請求后台是需要帶一個callback的參數(該參與可以與后台協商命名),后台識別到callback參數后,會生成一段js格式的數據返回到頁面也就是=》callBackFun+'('+json+')';
可以看做,返回了一個方法調用,即方法名中的參數為需要獲取的對象,前台解析即可。
在VUe中使用JSOnP,引用了vue-jsonp插件:
詳細查看github即可:https://github.com/LancerComet/vue-jsonp
getData:function() {
this.$jsonp('https://api.douban.com/v2/book/1220562', null).then(json => {
console.log(json);
// Success.
}).catch(err => {
// Failed.
})
},
注意:服務端需要識別jsonp並做處理!