jsonp原理及簡單實(shí)現(xiàn) JSONP的工作原理是什么?
JSONP的工作原理是什么?對于開發(fā)人員來說,API開發(fā)和調(diào)用是必不可少的。在我們的日常開發(fā)中,如果調(diào)用第三方API,并且以JSON數(shù)據(jù)格式返回第三方API,那么默認(rèn)情況下不能直接調(diào)用(比如在Ajax
JSONP的工作原理是什么?
對于開發(fā)人員來說,API開發(fā)和調(diào)用是必不可少的。在我們的日常開發(fā)中,如果調(diào)用第三方API,并且以JSON數(shù)據(jù)格式返回第三方API,那么默認(rèn)情況下不能直接調(diào)用(比如在Ajax模式下調(diào)用),因?yàn)闀?huì)涉及跨域問題。如何解決JSON的跨域調(diào)用?那么你必須使用jsonp
!還有一個(gè)不精確的理解:帶回調(diào)的JSON是jsonp。
由于瀏覽器的同源策略,a.com上的網(wǎng)頁無法直接與b.com服務(wù)器進(jìn)行通信。Jsonp用于解決瀏覽器的跨域數(shù)據(jù)訪問問題。
(<script>標(biāo)記沒有跨域限制)!所以我們可以使用這個(gè)功能與第三方進(jìn)行通信。
JSONP整個(gè)工作流程如下:
1,調(diào)用方頁面使用script標(biāo)簽引用第三方API地址;
2,第三方響應(yīng)數(shù)據(jù)是JSON數(shù)據(jù)包,格式如下:
3,這樣瀏覽器得到的API實(shí)際是JS代碼后,再調(diào)用回調(diào)函數(shù),函數(shù)的參數(shù)是JSON對象,我們可以在回調(diào)中。數(shù)據(jù)處理在CK函數(shù)中進(jìn)行。
既然JSONP同樣可以請求到數(shù)據(jù),還可以跨域,為什么還要用axios?
Axios和jsonp不是解決同一個(gè)問題的同一個(gè)東西
Axios是Ajax請求的封裝
而jsonp是跨域Ajax請求的解決方案
所以即使使用Axios,也會(huì)出現(xiàn)跨域問題。當(dāng)您遇到跨域問題時(shí),可以選擇使用jsonp/proxy來解決這個(gè)跨域問題。
本質(zhì)上,兩者之間沒有沖突
JSON只是JavaScript對象表示法的縮寫,所以您可以像HTML一樣直接讀取字母。你可以像閱讀HTML一樣閱讀JSON,也就是說你可以閱讀每一個(gè)字母
sonp(帶填充的JSON)是JSON的一種“使用模式”,可以用來解決主流瀏覽器的跨域數(shù)據(jù)訪問問題。由于同源策略,它通常位于Server1中example.com網(wǎng)站的網(wǎng)頁不是Server1example.com網(wǎng)站服務(wù)器通信,和HTML
外行?從理論上講,JS是一種腳本語言(JavaScript),JSON(JavaScript object notation,JS)是一種輕量級(jí)的數(shù)據(jù)交換格式,是JS的子集,沒有替代,沒有替代。PHP、Java等后端語言開發(fā)的API接口返回JSON標(biāo)準(zhǔn)格式的數(shù)據(jù),方便前端調(diào)用。前端可以使用js讀取JSON數(shù)據(jù),結(jié)果顯示在網(wǎng)站上!為什么是JSON?因?yàn)镴SON是一種標(biāo)準(zhǔn)的數(shù)據(jù)交互格式。大多數(shù)語言都可以讀取JSON數(shù)據(jù)。這樣,我們就可以開發(fā)多個(gè)終端,比如流行的微信小程序、應(yīng)用程序和網(wǎng)站,來同步數(shù)據(jù)!