跨域解決方案

2021-10-02 09:49:51 字數 1053 閱讀 8083

後端解決跨域的主要方式是,通過在響應頭中設定相關的跨域字段,用於告訴瀏覽器允許跨域請求資源。

在前後端分離的場景中,登入頁面存在後端伺服器中,當登入成功後,需要發起跳轉請求,跳轉至前端首頁的情況。

nginx響應頭相關配置(可指定匹配路徑,並不一定需要在location / 下配置)

在前後端分離的場景中,由於瀏覽器的同源策略,造成ajax請求後端資源時,無法獲取後端cookie。因此,如果需要前端在請求跨域資源時,攜帶對應的cookie,則需要進行跨域處理。

處理方案一:

1. 後端需要在響應頭中新增access-control-allow-credentials=true,用於告知瀏覽器,伺服器允許接收cookie。

2. 前端需要對ajax設定withcredentials = true,用於告知瀏覽器允許ajax讀取跨域的cookie。

axios設定:axios.defaults.withcredentials = true

注意: 當設定axios.defaults.withcredentials = true後,瀏覽器就不支援使用萬用字元" * 「,因此access-control-allow-headers和access-control-allow-origin欄位需要設定具體的值,而不能通過」 * "進行替代。

處理方案二:

通過window.location = 「url」 或者 window.open(「url」,"_self"),可以直接獲取cookie,不存在跨域情況。

原理:window為瀏覽器物件模型,相當於乙個瀏覽器,通過瀏覽器直接發起請求,不會存在跨域。跨域主要是瀏覽器對ajax發起資源請求的一種限制。因此,通過瀏覽器發起的請求,可以直接讀取到cookie。

跨域解決方案

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

跨域解決方案

瀏覽器端的同源策略 如果兩個頁面的協議,埠和網域名稱中的其中任意乙個不相同,它們就是不同源的,瀏覽器會限制他們之間的資源互動 跨域 跨域的安全限制只針對瀏覽器,伺服器是沒有跨域的安全限制的 原理 由於伺服器沒有跨域限制,所以在需要跨域訪問時,在中間設定乙個中間層 舉例 192.168.10.1 80...

跨域解決方案

跨域解決方案有哪些?方案一原理 動態建立乙個script標籤。利用script標籤的src屬性不受同源策略限制。因為所有的src屬性和href屬性都不受同源策略限制。可以請求第三方伺服器資料內容 步驟1 去建立乙個script標籤 步驟2 介面引數,必須要帶乙個自定義函式名 要不然後台無法返回資料 ...