js跨域及解決方案

2022-06-26 01:15:08 字數 895 閱讀 1991

當前發起請求的域與該請求指向的資源(該請求所在的頁面)所在的域不一樣。

此時該請求就會受到瀏覽器sop(同源策略)的限制,這樣做可以降低被csrf(跨站請求偽造)攻擊的可能,但是同源策略並不能避免csrf。對csrf感興趣的可以戳這裡

這裡的域指的是這樣的乙個概念:我們認為若協議 + 網域名稱 + 埠號均相同,那麼就是同域。

jsonp解決跨域問題是乙個比較古老的方案(實際中不推薦使用),這裡做簡單介紹(實際專案中如果要使用jsonp,一般會使用jq等對jsonp進行了封裝的類庫來進行ajax請求)

實現原理

jsonp之所以能夠用來解決跨域方案,主要是因為

//伺服器**

res.send("我是一張");

});這種方式優點是很明顯的:相容性非常好,缺點就是:只能發生get請求,而且無法獲取響應文字。

websockets是一種先進的技術。它可以在使用者的瀏覽器和伺服器之間開啟互動式通訊會話。使用此api,您可以向伺服器傳送訊息並接收事件驅動的響應,而無需通過輪詢伺服器的方式以獲得響應。

它預設是可以跨域的。

// create websocket connection.

const socket = new websocket('ws://localhost:8080');

// connection opened

socket.addeventlistener('open', function (event) );

// listen for messages

socket.addeventlistener('message', function (event) );

跨域問題及解決方案

閱讀目錄 回到頂部 自 跨域是指我們訪問乙個 如 這個url,從這個頁面中又去訪問這個url,這個時候就引發了跨域,當網域名稱 埠 二級網域名稱不同都會引發跨域。此時9000埠的服務端可以接收到請求,也會給瀏覽器響應資料,但是到達瀏覽器後就被攔截了,因為瀏覽器的同源策略。url結果 原因成功網域名稱...

跨域問題及解決方案

跨域是指我們訪問乙個 如 這個url,從這個頁面中又去訪問這個url,這個時候就引發了跨域,當網域名稱 埠 二級網域名稱不同都會引發跨域。此時9000埠的服務端可以接收到請求,也會給瀏覽器響應資料,但是到達瀏覽器後就被攔截了,因為瀏覽器的同源策略。url結果 原因成功網域名稱 協議 埠相同 失敗協議...

跨域解決方案

因為瀏覽器出於安全考慮,有同源策略。也就是說,如果協議 網域名稱或者埠有乙個不同就是跨域,ajax 請求會失敗。那麼是出於什麼安全考慮才會引入這種機制呢?其實主要是用來防止 csrf 攻擊的。簡單點說,csrf 攻擊是利用使用者的登入態發起惡意請求。也就是說,沒有同源策略的情況下,a 可以被任意其他...