国产精品一区二区久久久-99久久久精品免费看国产-久久九九99热这里只有精品-漂亮人妻被中出中文字幕久久-五月情综合网站久久-福利姬3d全彩办公室色欲-av网站在线播放网站-亚洲日本岛国动作片在线观看-男人的天堂啊啊啊啊

日志樣式

既然JSONP同樣可以請求到數(shù)據(jù),還可以跨域,為什么還要用axios?.

  • 標簽 :

一個場景

你做為項目前端的負責人,需要定下前端的數(shù)據(jù)請求規(guī)范與框架,你早就對axios很不滿了,于是決定拉起袖子,直接用JSONP上。

于是在團隊里面,你直接喊,大家,后面我們請求數(shù)據(jù)統(tǒng)一使用JSONP,誰用axios誰明天就不用來了。

然后,你和服務(wù)端的人員開了一個會,讓他們定下接口文檔,一天后,你收到一份接口文檔,里面寫好了請求協(xié)議,除了GET還有POST,還有PUT和DELETE。

你用了一個GET接口,請求完,發(fā)現(xiàn)很完美,服務(wù)端不用設(shè)置Access-Control-Allow,你突然覺得自己這個決定很完美,果然最初的決定是正確的,于是你就讓各個開發(fā)開始對接服務(wù)端接口。

問題來了

不一會兒,一位前端開發(fā)和你說,不行呀,JSONP只能進行Get請求,其它什么POST都不支持呀,頓時你懵逼了……

上面是個虛擬場景,里面講了JSONP的一個問題,就是只能使用GET請求獲取數(shù)據(jù)。我們來細說下什么是JSONP。

JSONP原理

ajax的核心是通過XmlHttpRequest獲取鏈接的內(nèi)容,它是可以支持任何請求方式的。但有個問題就是,如果服務(wù)端不支持,它是不可能取到跨域請求的信息的。而JSONP呢?

我們在寫網(wǎng)頁代碼時,發(fā)現(xiàn)標簽的src屬性是可以加載其它跨的信息的,比如Script、Img、iFrame的標簽,于是我們靈機一動,那是不是也可以來加載服務(wù)端接口呀。

然后你試了下,哇靠,果然可以,只要輸出格式處理好,你甚至可以使用它來請求數(shù)據(jù)并進行處理。

先天問題

但是由于先天性的問題,JSONP只適合用來獲取數(shù)據(jù),它沒法做其它請求處理。

那你可能會說,那我就獲取使用JSONP可以了吧,其它使用AJAX。我們先不說,統(tǒng)一編碼對維護性的成本降低的重要性,你還分兩套實現(xiàn)方案,你如果實在要處理,我們試下看看效果如果。

假如一切正常,你用JSONP請求數(shù)據(jù),數(shù)據(jù)返回正常,你顯示,很完美。

假如出了一點點問題,你用JSONP請求數(shù)據(jù),數(shù)據(jù)沒返回,或是一些奇怪的錯誤,對,沒有錯誤碼,你都不知道是網(wǎng)絡(luò)問題,還是代碼問題,還是鑒權(quán)問題。對了,說到鑒權(quán),JSONP你都沒法自定義Header,可制作性太低了。

總結(jié)下

  1. JSONP請求能力單一
  2. JSONP在現(xiàn)在前端開發(fā)中影響編碼規(guī)范
  3. 現(xiàn)在跨域處理很方便,處理都是微服務(wù)

例外

如果你實在需要一個外部接口,這個接口不是你開發(fā)的,且是不支持跨域的,那JSONP是最好的處理方式。
轉(zhuǎn)載至頭條號寫代碼的熊貓。

天津市犀思科技有限公司是專業(yè)從事web應(yīng)用定制開發(fā)的一家公司,主營業(yè)務(wù)包括定制功能型網(wǎng)站建設(shè)開發(fā)、微信小程序開發(fā)、微信公眾號開發(fā)、APP定制開發(fā)、天津企業(yè)微信開發(fā)、ERP、CRM、OA等企業(yè)應(yīng)用場景信息化解決方案等服務(wù),致力于成為中國領(lǐng)先的IT服務(wù)及行業(yè)解決方案的提供商。


發(fā)表評論

電子郵件地址不會被公開。 必填項已用*標注

看不清?點擊更換