如何解決跨域問題

  • 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請求。
    JSONPjson+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)容

  • 1. 什么是跨域? 跨域一詞從字面意思看,就是跨域名嘛,但實際上跨域的范圍絕對不止那么狹隘。具體概念如下:只要協(xié)議...
    他在發(fā)呆閱讀 829評論 0 0
  • 1. 什么是跨域? 跨域一詞從字面意思看,就是跨域名嘛,但實際上跨域的范圍絕對不止那么狹隘。具體概念如下:只要協(xié)議...
    w_zhuan閱讀 532評論 0 0
  • 什么是跨域? 2.) 資源嵌入:、、、等dom標簽,還有樣式中background:url()、@font-fac...
    電影里的夢i閱讀 2,389評論 0 5
  • 跨域問題產(chǎn)生的原理是指通過js在不同的域之間進行數(shù)據(jù)傳輸或通信,比如用ajax向一個不同的域請求數(shù)據(jù),或者通過js...
    往復隨安_cc75閱讀 525評論 0 1
  • 我有一個魅惑的名字還有一個青春的身體有一頭飄逸的長發(fā)還有一雙天真的眸子 我穿著潔白的衣裙我蒙著玫瑰的紗麗趁著春花將...
    劉小木閱讀 235評論 4 2