老闆直呼內行,nginx和cors解決跨域問題

2021-10-11 02:29:24 字數 1851 閱讀 8935

跨域存在必要性

如何解決

協議,ip,埠號。

三者有乙個不同,就存在跨域行為。

http、https協議。

你在本地跑你的前端專案,訪問阿里雲上的後台專案,兩個ip不一樣,存在跨域問題。

比如前後端分離專案

前端 localhost:8080

後端 localhost:8090

在前端頁面,在localhost:8080裡邊,我要訪問別的域localhost:8090,就存在跨域問題。

同源策略,是瀏覽器最基礎的最核心的安全功能。

同源策略,限制了a源與b源之間的資料互動。

如果沒有同源策略,瀏覽器很容易受到xss、csfr等攻擊。

我舉個例子。

以登入來說明跨域存在的必要性。

登入乙個**後,服務端會在響應頭加入set-cookies欄位,然後下次訪問服務端的時候,請求頭中就會帶著這個cookies,表明已經登入過,可以正常訪問。

在沒有同源策略的情況下,如果此時頁面上跳出來了乙個非法鏈結,你點進去了,這個非法鏈結就可以獲取你的cookies資訊,之後用你的賬號瘋狂買買買。

在有同源策略的情況下,**的源與非法鏈結的源是不可以進行資料互動的,非法鏈結沒辦法獲取你的資訊。

使用nginx配置反向**解決跨域問題。

nginx一大重點功能就是反向**。

比如:前端專案:localhost:8080

後端專案:localhost:8090

現在localhost:8080裡邊,訪問8090埠,產生了跨域問題。

在8080裡邊,只能訪問8080的東西,那麼我就讓nginx時刻監聽著8080埠號,然後將來自8080的請求,根據不同的location,**向8090伺服器。

由nginx**伺服器,幫你訪問8090埠,然後獲取返回資料,再傳給你8080,nginx幫你解決了8080直接訪問8090產生的跨域問題,那麼問題來了,nginx怎麼實現的這個功能呢?俺也不知道。

使用cors跨域資源共享解決跨域問題。

前提條件:

cors通訊需要瀏覽器和伺服器端共同進行配合。

瀏覽器端不用你管,只要不是ie10以下,瀏覽器預設支援cors通訊。

所以你需要做的就是在伺服器端進行處理。

思路和實現:

明確一點:cors本質就是對請求頭和響應頭進行處理。

瀏覽器自己會在請求頭裡邊加入一些資訊,請求頭里本身就包括,比如origin,access-control-request-headers等。伺服器根據自己配置的跨域規則對這些資訊進行判斷,是否允許其進行跨域,若允許,在訪問完成後,服務響應的時候,再在頭裡邊加入一些資訊。加入什麼資訊呢,響應頭是有很多東西的,比如access-control-allow-credentials,access-control-allow-origin等。

當瀏覽器發生跨域請求時,經過閘道器,使用spring mvc的corsfilter,對源進行判斷和處理,就可以成功完成資料的互動。

記住下邊這兩行**就可以了。

乙個是配置,配置允許哪些源,是否允許攜帶cookie,允許其你去的型別,允許頭資訊,有效期等內容。

乙個是資源,對哪些資源(url,一般會使用/**表示所有資源)使用哪些配置(上邊的配置)。

corsconfiguration config =

newcorsconfiguration()

; urlbasedcorsconfigurationsource source =

newurlbasedcorsconfigurationsource()

; ojbk,cors解決跨域問題完成。

讓內網穿透變的更簡單,小白看了直呼內行!!!

原生外掛程式中,有乙個比較有趣的功能,內網穿透。內網穿透能讓沒有公網 ip 的使用者獲得與公網 ip 使用者相同的權利。比如檔案分享 http 服務共享等等。最常見的應用 將家中電腦的某個資料夾分享出來,在外出的時候可以隨時連回家獲取檔案。utools 的內網穿透有三種模式 http 服務要求你在電...

老闆修煉之二 老闆,像外行那樣思考,像內行那樣做事

url 成功的老闆有乙個共同特徵 像外行那樣思考,像內行那樣做事。外行心態 帶動創新 對此,我體驗頗深。從來沒有涉足過酒店管理的我,2002年受邀任鄭州一家剛剛組建的三星級酒店老總,也正是這時,我發現自己的決策過程達到了前所未有的科學與程式化。當時由於是外行,我不得不多方聽取不同意見。同時,由於不專...