JS跨域請(qǐng)求的問題解析
同源策略
在運(yùn)行中我們有時(shí)會(huì)出錯(cuò)是因?yàn)槲覀冞`反了同源策略,這是一種瀏覽器所實(shí)施的安全措施,用于限制具有不同來源的文檔之間的交互。頁面的來源由其協(xié)議,主機(jī)和端口號(hào)定義。具有相同來源的資源可以相互完全訪問。但是如果具有不相同的源將會(huì)拒絕訪問。
http://www.a.com/a.js http://www.b.com/a.js 這兩個(gè)之間就不可以互相訪問,因?yàn)橛蛎牟幌嗤?/pre>
域名組成

如果上面兩個(gè)域名想互相訪問就需要跨域請(qǐng)求,一般情況下同源政策規(guī)定:允許跨源 寫入,而不允許跨源 讀取這意味著同源政策不會(huì)阻止將數(shù)據(jù)寫入,只會(huì)禁止他們從域中讀取數(shù)據(jù), 或者對(duì)從其域收到的響應(yīng)做任何事情。
跨域請(qǐng)求的方法
JSONP
JSONP 稱為帶有填充的JavaScript對(duì)象表示,是一種通過利用HTML頁面中的腳本標(biāo)記可以來加載來自不同來源的代碼來執(zhí)實(shí)現(xiàn)跨域請(qǐng)求的方法。JSONP依賴于<script>標(biāo)簽可以來自不同來源的事實(shí)。當(dāng)瀏覽器解析<script>標(biāo)記時(shí),它將獲取腳本內(nèi)容,并在當(dāng)前頁面的上下文中執(zhí)行它。通常,服務(wù)將返回HTML或以XML或JSON等數(shù)據(jù)格式表示的某些數(shù)據(jù)。但是,當(dāng)向啟用JSONP的服務(wù)器發(fā)出請(qǐng)求時(shí),它會(huì)返回一個(gè)腳本塊,該腳本塊在執(zhí)行時(shí)會(huì)調(diào)用頁面指定的回調(diào)函數(shù),并將實(shí)際數(shù)據(jù)作為參數(shù)提供
注意:它沒有相同的源點(diǎn)限制,即使在舊瀏覽器中也具有良好的兼容性但是JSONP只能用于執(zhí)行跨域GET請(qǐng)求,服務(wù)器必須顯式支持JSONP請(qǐng)求。

CORS方法
為服務(wù)器提供了一種機(jī)制,告訴瀏覽器可以請(qǐng)求域A讀取來自域B的數(shù)據(jù)。通過在響應(yīng)中包含一個(gè)新的 Access-Control-Allow-OriginHTTP頭來完成的,當(dāng)瀏覽器收到來自跨源源的響應(yīng)時(shí),它將檢查CORS頭。如果響應(yīng)頭中指定的源點(diǎn)與當(dāng)前源點(diǎn)相匹配,則允許對(duì)響應(yīng)進(jìn)行讀訪問,否則就會(huì)報(bào)錯(cuò)。
與jsonp相比,CORS具有以下優(yōu)勢:
它不僅支持GET請(qǐng)求,還支持POST等其他請(qǐng)求
它可以使用XMLHttpRequest發(fā)送和接收數(shù)據(jù),并具有更好的錯(cuò)誤處理機(jī)制

總結(jié):以上就是本篇文章的全部內(nèi)容了,希望對(duì)大家學(xué)習(xí)有所幫助,感謝大家對(duì)腳本之家的支持。
相關(guān)文章
JS實(shí)現(xiàn)向表格中動(dòng)態(tài)添加行的方法
這篇文章主要介紹了JS實(shí)現(xiàn)向表格中動(dòng)態(tài)添加行的方法,涉及javascript針對(duì)表格行的動(dòng)態(tài)添加技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
layui checkbox默認(rèn)選中,獲取選中值,清空所有選中項(xiàng)的例子
今天小編就為大家分享一篇layui checkbox默認(rèn)選中,獲取選中值,清空所有選中項(xiàng)的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09
分享JS表單驗(yàn)證源碼(帶錯(cuò)誤提示及密碼等級(jí))
這篇文章主要介紹了JS表單驗(yàn)證源碼(帶錯(cuò)誤提示及密碼等級(jí)),代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
C#中TrimStart,TrimEnd,Trim在javascript上的實(shí)現(xiàn)
今天在后臺(tái)寫了個(gè)類,后來才發(fā)現(xiàn),需要在JS上做..于是把代碼拷到j(luò)s上進(jìn)行修改,代碼中用到TrimStart,TrimEnd,Trim等方法,在網(wǎng)上找半天竟然沒找到.要么就只能清除空格的!2011-01-01
JS實(shí)現(xiàn)數(shù)組深拷貝的方法分析
這篇文章主要介紹了JS實(shí)現(xiàn)數(shù)組深拷貝的方法,結(jié)合實(shí)例形式分析了javascript數(shù)組深拷貝的相關(guān)原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下2019-03-03
JavaScript獲取網(wǎng)頁支持表單字符集的方法
這篇文章主要介紹了JavaScript獲取網(wǎng)頁支持表單字符集的方法,涉及javascript中acceptCharset方法的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04
javascript數(shù)組中的concat方法和splice方法
這篇文章主要介紹了javascript數(shù)組中的concat方法和splice方法,concat方法作用合并數(shù)組,可以合并一個(gè)或多個(gè)數(shù)組,會(huì)返回合并數(shù)組之后的數(shù)據(jù),不會(huì)改變?cè)瓉淼臄?shù)組,更多相關(guān)內(nèi)容需要的小伙伴可以參考下面文章內(nèi)容2022-03-03

