JSONP:
原理是:動態(tài)插入script
標簽,通過script
標簽引入一個js
文件,這個js
文件載入成功后會執(zhí)行我們在url參數(shù)中指定的函數(shù),并且會吧我們需要的json
數(shù)據(jù)作為參數(shù)傳入。
由于同源策略的限制,XmlHttpRequest
只允許請求當前源(域名、協(xié)議、端口)的資源,為了實現(xiàn)跨域請求,可以通過script
標簽實現(xiàn)跨域請求,然后在服務(wù)端輸出JSON數(shù)據(jù)并執(zhí)行回調(diào)函數(shù),從而解決了跨域的數(shù)據(jù)請求。
有點是兼容性好,簡單易用,支持瀏覽器與服務(wù)器雙向通信。缺點是只支持GET請求。
JSONP
:json+padding
,顧名思義,就是把JSON填充到一個盒子里。CORS
服務(wù)器端對于CORS
的支持,主要就是通過設(shè)置Access-Control-Allow-Origin
來進行的。如果瀏覽器檢測到相應(yīng)的設(shè)置,就可以允許Ajax
進行跨域的訪問。通過修改
document.domain
來跨子域(降域)
將子域和主域的document.domain
設(shè)為同一個主域,前提條件:這兩個域名必須屬于同一個基礎(chǔ)域名,而且所用的協(xié)議端口都要一直,否則無法利用document.domain
進行跨域。使用
window.name
來進行跨域
window
對象有一個name
屬性,該屬性有一個特征:即在一個窗口(window
)的生命周期內(nèi),窗口載入的所有的頁面都是共享一個window.name
的,每個頁面對window.name
都有讀寫權(quán)限,window.name
是持久存在一個窗口載入過的所有頁面中的使用
HEML5
中新引進的window.postMessage
方法來跨域傳送數(shù)據(jù)
還有flash
,在服務(wù)器上設(shè)置代理頁面等跨域方式。
如何解決跨域問題
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
推薦閱讀更多精彩內(nèi)容
- 跨域問題產(chǎn)生的原理是指通過js在不同的域之間進行數(shù)據(jù)傳輸或通信,比如用ajax向一個不同的域請求數(shù)據(jù),或者通過js...