1. 程式人生 > >什麼是跨域?常見的跨域的方式都有哪幾種

什麼是跨域?常見的跨域的方式都有哪幾種

跨域指的是瀏覽器不能執行其他網站的指令碼。它是由瀏覽器的同源策略造成的,是瀏覽器對javascript施加的安全限制。
同源就是指,域名,協議,埠均相同。

這裡要注意一下,localhost和127.0.0.1雖然都指向本機,但也屬於跨域。
localhost也叫local ,正確的解釋是:本地伺服器
127.0.0.1在windows等系統的正確解釋是:本機地址(本機伺服器)
他們的解析通過本機的host檔案,windows自動將localhost解析為127.0.0.1

常見的跨域方式

  1. 利用jsonp進行跨域。(至於json與jsonp之間的區別,我在另一篇文章中描述過)這種方法就不用介紹了,這也是最常見的跨域方式之一。

  2. window.name+iframe window.name通過在iframe(一般動態建立i)中載入跨域HTML檔案來起作用。然後,HTML檔案將傳遞給請求者的字串內容賦值給window.name。然後,請求者可以檢索window.name值作為響應。

  3. window.postMessage() HTML5新特性,可以用來向其他所有的 window 物件傳送訊息。需要注意的是我們必須要保證所有的指令碼執行完才傳送 MessageEvent,如果在函式執行的過程中呼叫了它,就會讓後面的函式超時無法執行。

  4. WebSocket WebSocket protocol 是HTML5一種新的協議。它實現了瀏覽器與伺服器全雙工通訊,同時允許跨域通訊,是server push技術的一種很棒的實現。相關文章,請檢視:

    WebSocket WebSocket-SockJS

  5. 圖片ping或script標籤跨域 圖片ping常用於跟蹤使用者點選頁面或動態廣告曝光次數。script標籤可以得到從其他來源資料,這也是JSONP依賴的根據。
    缺點:只能傳送Get請求 ,無法訪問伺服器的響應文字(單向請求)