真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringCloud前后端分離后引起跨域訪問的示例分析

這篇文章主要為大家展示了“SpringCloud前后端分離后引起跨域訪問的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學習一下“SpringCloud前后端分離后引起跨域訪問的示例分析”這篇文章吧。

我們提供的服務有:網(wǎng)站制作、成都網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、凌海ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術(shù)的凌海網(wǎng)站制作公司

Spring Cloud 微服務試點改造,目前在嘗試前后端分離。

前臺A應用(本機8080端口),通過網(wǎng)管(本機8769端口)調(diào)用后臺應用B(本機8082端口)、應用C發(fā)布的http服務。

SpringCloud前后端分離后引起跨域訪問的示例分析SpringCloud前后端分離后引起跨域訪問的示例分析

A的js代碼如下:

SpringCloud前后端分離后引起跨域訪問的示例分析

運行后報錯:

XMLHttpRequest cannot load http://127.0.0.1:8769/service-B/getResInfo. No 'Access-Control-Allow-Origin' header is present on the requested resource.

Origin 'http://localhost:8080' is therefore not allowed access.

問題原因:A的前臺訪問B應用,導致了跨域。

跨域訪問違反了同源策略,同源策略規(guī)定:瀏覽器的ajax只能訪問跟它的前臺頁面同源(相同域名或IP)的資源。

也就是說,如果A的前臺訪問A的后臺,則不會跨域。。

解決方案

方案一:

在被調(diào)用的類或方法上增加@CrossOrigin注解來聲明自己支持跨域訪問

origins=*表示允許所有來源都支持,也可以定義特定的來源,比如http://domain1.com

allowCredentials=true 表示response里會增加標示Access-Control-Allow-Credentials=true

SpringCloud前后端分離后引起跨域訪問的示例分析

如果只是針對某個服務需要被跨域訪問,用此方案可行。

但由于我們進行了前后端分離,前臺調(diào)用的都是跨域的服務,此方案需要對幾乎所有的B、C應用的服務對應的方法或者類上增加注解,不太合適。

而且,如果B、C服務都開放了跨域訪問,則可能存在安全隱患,因為其他未知應用也可以訪問這些服務。。

方案二:

在網(wǎng)管zuul里增加CorsFilter過濾器,比如下圖直接在啟動類里增加紅色部分代碼。

SpringCloud前后端分離后引起跨域訪問的示例分析

由于此方案是增加到網(wǎng)管上的,對B、C應用的代碼都無任何改造。

且因為B、C未直接開放跨域訪問,所以其他應用無法跨越訪問B、C服務,比如A不經(jīng)過網(wǎng)關(guān)直接訪問B、C應用會訪問失敗。

后續(xù)會對網(wǎng)管應用裝配上SSO進行單點登錄校驗,來更好的保障服務安全。

以上是“SpringCloud前后端分離后引起跨域訪問的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁標題:SpringCloud前后端分離后引起跨域訪問的示例分析
文章轉(zhuǎn)載:http://weahome.cn/article/gdjcog.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部