您當前的位置:首頁 > 舞蹈

什麼是跨域?跨域的解決方法。

作者:由 胡漂亮 發表于 舞蹈時間:2022-07-18

一、什麼是跨域?

在瞭解什麼是跨域的時候,我們首先要了解一個概念,叫

同源策略

,什麼是同源策略呢,就是我我們的瀏覽器出於安全考慮,只允許與

本域

下的介面互動。不同源的客戶端指令碼在沒有明確授權的情況下,不能讀寫對方的資源。

是什麼意思呢,就比如你剛剛登入了淘寶買了東西,但是你現在又點進去了另外一個網站,那麼你現在的淘寶賬戶是屬於登入狀態,而並沒有登出,所以你現在點進去的這個網站可以看到你的賬戶資訊,並操作你的賬戶資訊,這樣子就很危險。

我們在來了解一個概念,就是本域,什麼是本域呢?就是同協議,同域名,同埠就叫本域。

什麼是跨域?跨域的解決方法。

本域

從這個圖片我們可以清楚的瞭解到,什麼是本域,以及什麼時候跨域。

瀏覽器請求的三種報錯:

1、請求未傳送

2、請求傳送後,伺服器發現不一樣,伺服器未反應。

3、請求傳送,伺服器有反應,資料返回的時候,瀏覽器發現不對,被攔截。

二、跨域的解決方法

那如果非要實現跨域,我們應該怎麼辦呢?

1、JSONP (JSON with padding)

就是與後端協商好,在請求資料返回資料的時候以字串的格式返回。

script src = ‘xxx。com’ callback = showDate

function showDate (ret) {

console。log(ret)

}

這個時候就跨域了,JSONP 可以在IE10以下的瀏覽器去獲取資料。

2、CORS (跨資源共享)

在響應頭裡面寫上

res。setHeader(‘ Access - Contorl - Allow - Origin’ ,‘http://localhost:8080’)

只要響應頭裡面的Origin裡面本域(協議、域名、埠)一樣,就可以接受到資料

3、降域和PostMessage

3.1 降域

document。domain = ‘xxx。com’

需要本域中的域名和埠一樣

3.2 PostMessage

window。frames[0],PostMessage(this,value)

window。addEventListener(‘message’,function(e)){} //呼叫message,監聽對方傳送的訊息

標簽: 本域  跨域  瀏覽器  請求  傳送