今天我們再來分享一下關於跨域的問題,雖然之前也有分享過,但是解決方案不太全,且最近在面試的過程中,跨域是乙個經典問題,所以我們需要知道其中的原理。
跨域是瀏覽器的同源策略導致的。
同源策略是乙個重要的安全策略,它用於限制乙個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:8080
websocket
協議可在網路瀏覽器和伺服器之間建立「套接字」連線。簡單的說:客戶端和伺服器之間存在持久的連線,而且雙方都可以隨時開始傳送資料,這種方式本質上沒有使用http
,因此也沒有跨域的限制。關於使用方式可以參考:
jsonp
主要是利用了script
標籤沒有跨域限制這個漏洞來完成的,但是只支援get方法,而且前後端都需要進行設定。
Sybase IQ,你需要知道的基礎
sybase iq,你需要知道的基礎 第一,知道iq跟其它的關係型資料庫相比,它的主要特徵是什麼?包括查詢快 資料壓縮比高 load快,但是插入更新慢,不太適合資料老是變化,它是按列儲存的。這時候你就知道它適做dss 決策支援系統 資料集市,資料倉儲,它不適合oltp。適合olap。第二,知道iq自...
Sybase IQ,你需要知道的基礎
sybase iq,你需要知道的基礎 第一,知道iq跟其它的關係型資料庫相比,它的主要特徵是什麼?包括查詢快 資料壓縮比高 load快,但是插入更新慢,不太適合資料老是變化,它是按列儲存的。這時候你就知道它適做dss 決策支援系統 資料集市,資料倉儲,它不適合oltp。適合olap。第二,知道iq自...
關於快取你需要知道的
作後端開發的同學,快取是必備技能。這是你不需要花費太多的精力就能顯著提公升服務效能的靈丹妙藥。前提是你得知道如何使用它,這樣才能夠最大限度發揮它的功效,並抑制其 本文將介紹最如何正確的新增和更新快取。這部分將介紹在開始加快取之前我們必須要做的事情。這步非常重要,如果沒弄好,很有可能加了快取反而不如不...