JSONP的工作原理是什么?
對于開發(fā)人員來說,離不開API的開發(fā)和調(diào)用,我們在日常開發(fā)中,如果調(diào)用了第三方的API,而且此第三方API是以json數(shù)據(jù)格式返回時(shí),默認(rèn)是無法直接調(diào)用的(比如AJAX方式調(diào)用),因?yàn)闀?huì)涉及到跨域問題。如何解決JSON跨域調(diào)用呢?那就得用到JSONP!
JSON和JSONP的區(qū)別最簡單的理解:JSON是一種數(shù)據(jù)格式,而JSONP是一種數(shù)據(jù)調(diào)用的方式。還有一種不嚴(yán)謹(jǐn)?shù)睦斫猓簬allback的JSON是JSONP。
由于瀏覽器的同源策略,a.com上網(wǎng)頁是無法和b.com服務(wù)器直接溝通的,JSONP就是用來解決瀏覽器跨域數(shù)據(jù)訪問的。
JSONP的原理分析上面說到了,所有主流瀏覽器出于安全因素考慮都有同源策略,而HTML中的<script>標(biāo)簽則不受此限制(<script>標(biāo)簽沒有跨域限制)!所以我們可以利用這個(gè)特性來和第三方進(jìn)行數(shù)據(jù)通訊。
JSONP整個(gè)工作流程大概如下:
1、調(diào)用方頁面上使用script標(biāo)簽引用第三方API地址;
2、第三方響應(yīng)的數(shù)據(jù)是JSON數(shù)據(jù)的包裝,格式如下:
callback({"name":"susan","age":"22"})3、這樣一來,瀏覽器請求了此API后獲取到的實(shí)際上是一段JS代碼,然后調(diào)用callback函數(shù),函數(shù)的實(shí)參是JSON對象,我們可以在callback函數(shù)中進(jìn)行數(shù)據(jù)處理。
以上就是我的觀點(diǎn),對于這個(gè)問題大家是怎么看待的呢?歡迎在下方評論區(qū)交流 ~ 我是科技領(lǐng)域創(chuàng)作者,十年互聯(lián)網(wǎng)從業(yè)經(jīng)驗(yàn),歡迎關(guān)注我了解更多科技知識(shí)!