你需要知道的解決跨域的方案

2021-10-09 07:57:30 字數 1604 閱讀 4339

今天我們再來分享一下關於跨域的問題,雖然之前也有分享過,但是解決方案不太全,且最近在面試的過程中,跨域是乙個經典問題,所以我們需要知道其中的原理。

跨域是瀏覽器的同源策略導致的。

同源策略是乙個重要的安全策略,它用於限制乙個origin的文件或者它載入的指令碼如何能與另乙個源的資源進行互動。它能幫助阻隔惡意文件,減少可能被攻擊的媒介。

當協議、網域名稱、埠都相同時才算同源。舉例如下:

跨域就是訪問了不同源的介面,就會出現跨域了,報錯資訊如下:

cors(cross origin resource sharing 跨域資源共享),使用額外的http頭來告訴瀏覽器,讓執行在乙個origin上的web應用被准許訪問來自不同源伺服器上的指定的資源。當乙個資源從與該資源本身所在的伺服器不同的域、協議或者埠請求乙個資源時,資源會發起乙個跨域http請求。

我們先來看一下node中的cors的解決**:

use(

async

(ctx, next)

=>

await

next()

;});

瀏覽器將cors請求分為兩類,簡單請求和非簡單請求。

什麼是簡單請求呢?需要同時滿足以下條件:

簡單請求不會觸發cors的預檢請求,直接發出cors請求。

什麼是非簡單請求呢?

**的思路是,利用伺服器端請求不會跨域的特性,讓介面和當前站點同域。

解決方式如下:

在根目錄下新建乙個vue.config.js檔案,裡面新增如下**:

module.exports =}}

}

這樣,當請求的路徑中含有auth-web時,會請求目標位址主要是專案上線時在nginx上做的配置

新增如下**:

server 

}

這樣,當請求的路徑中含有api時,會請求目標位址http://localhost:8080websocket協議可在網路瀏覽器和伺服器之間建立「套接字」連線。簡單的說:客戶端和伺服器之間存在持久的連線,而且雙方都可以隨時開始傳送資料,這種方式本質上沒有使用http,因此也沒有跨域的限制。關於使用方式可以參考:

jsonp主要是利用了script標籤沒有跨域限制這個漏洞來完成的,但是只支援get方法,而且前後端都需要進行設定。

Sybase IQ,你需要知道的基礎

sybase iq,你需要知道的基礎 第一,知道iq跟其它的關係型資料庫相比,它的主要特徵是什麼?包括查詢快 資料壓縮比高 load快,但是插入更新慢,不太適合資料老是變化,它是按列儲存的。這時候你就知道它適做dss 決策支援系統 資料集市,資料倉儲,它不適合oltp。適合olap。第二,知道iq自...

Sybase IQ,你需要知道的基礎

sybase iq,你需要知道的基礎 第一,知道iq跟其它的關係型資料庫相比,它的主要特徵是什麼?包括查詢快 資料壓縮比高 load快,但是插入更新慢,不太適合資料老是變化,它是按列儲存的。這時候你就知道它適做dss 決策支援系統 資料集市,資料倉儲,它不適合oltp。適合olap。第二,知道iq自...

關於快取你需要知道的

作後端開發的同學,快取是必備技能。這是你不需要花費太多的精力就能顯著提公升服務效能的靈丹妙藥。前提是你得知道如何使用它,這樣才能夠最大限度發揮它的功效,並抑制其 本文將介紹最如何正確的新增和更新快取。這部分將介紹在開始加快取之前我們必須要做的事情。這步非常重要,如果沒弄好,很有可能加了快取反而不如不...