新聞中心
前言
以前一直以為當(dāng)$.ajax()
的 dataType設(shè)置為jsonp時(shí),其method(請(qǐng)求方法)無(wú)論怎么設(shè)置,都會(huì)變成get,直到前兩天遇到了一個(gè)坑。
下面來(lái)一起看看詳細(xì)的介紹:
關(guān)于跨域請(qǐng)求與jsonp
- 跨域:由于受到同源策略(協(xié)議、域名、端口三者必須全部相同)的影響,ajax請(qǐng)求會(huì)受到限制,要突破這種限制,跨域便產(chǎn)生了。跨域的解決方案有多種,這里不展開(kāi)闡述,只是針對(duì)GET請(qǐng)求中的jsonp跨域解決方案做一下說(shuō)明。
- jsonp,本質(zhì)上jsonp不是xhr異步請(qǐng)求,就是請(qǐng)求了一個(gè)js文件,因此在chrome的network面板中的xhr標(biāo)簽下看不到j(luò)sonp的跨域請(qǐng)求,在js標(biāo)簽下能看到。就是利用script標(biāo)簽中src不受同源策略的限制,前端定義了回調(diào)函數(shù),請(qǐng)求的js腳本中獲取數(shù)據(jù),并執(zhí)行前端的回調(diào)函數(shù),因此前后端需要統(tǒng)一定義下回調(diào)函數(shù)名。
$.ajax
中jsonp,$.ajax
對(duì)jsonp進(jìn)行了封裝看起來(lái)像是ajax請(qǐng)求。由于jsonp是針對(duì)get請(qǐng)求的跨域解決,因此之前的經(jīng)驗(yàn)告訴我,即使type設(shè)置了post,在jsonp的時(shí)候,也會(huì)自動(dòng)轉(zhuǎn)換成get,直到有一天踩了個(gè)坑。翻看$.ajax模塊的源碼發(fā)現(xiàn),只有去手動(dòng)設(shè)置crossDomain為true,或者實(shí)際上是跨域,才會(huì)設(shè)置為get。否則還是填入的type
結(jié)論:
手動(dòng)設(shè)置crossDomain為true,或者真的是跨域,才會(huì)修改type為GET,否則還是傳入的type參數(shù)
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如有疑問(wèn)大家可以留言交流,謝謝大家對(duì)創(chuàng)新互聯(lián)建站的支持。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、建站服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
新聞名稱(chēng):關(guān)于jQuery.ajax()的jsonp碰上post詳解-創(chuàng)新互聯(lián)
文章路徑:http://ef60e0e.cn/article/dgchsc.html