Gateway如何實(shí)現(xiàn)全局跨域
解決方案:Gateway實(shí)現(xiàn)全局跨域
關(guān)鍵詞
- spring:cloud:gateway:globalcors
- gateway 使用 WebFlux 作為服務(wù)器,項(xiàng)目依賴(lài) starter-webflux,不要依賴(lài) starter-web
一、網(wǎng)關(guān)介紹
網(wǎng)關(guān)是介于客戶(hù)端和服務(wù)器端之間的中間層,所有的外部請(qǐng)求都會(huì)先經(jīng)過(guò)網(wǎng)關(guān)這一層。
也就是說(shuō),API 的實(shí)現(xiàn)方面更多的考慮業(yè)務(wù)邏輯,而安全、性能、監(jiān)控可以交由 網(wǎng)關(guān)來(lái)做,這樣既提高業(yè)務(wù)靈活性又不缺安全性,典型的架構(gòu)圖如圖所示:

優(yōu)點(diǎn):
- 安全 ,只有網(wǎng)關(guān)系統(tǒng)對(duì)外進(jìn)行暴露,微服務(wù)可以隱藏在內(nèi)網(wǎng),通過(guò)防火墻保護(hù)。
- 易于監(jiān)控??梢栽诰W(wǎng)關(guān)收集監(jiān)控?cái)?shù)據(jù)并將其推送到外部系統(tǒng)進(jìn)行分析。
- 易于認(rèn)證。可以在網(wǎng)關(guān)上進(jìn)行認(rèn)證,然后再將請(qǐng)求轉(zhuǎn)發(fā)到后端的微服務(wù),而無(wú)須在每個(gè)微服務(wù)中進(jìn)行認(rèn)證。
- 減少了客戶(hù)端與各個(gè)微服務(wù)之間的交互次數(shù)
- 易于統(tǒng)一授權(quán)
微服務(wù)網(wǎng)關(guān)就是一個(gè)系統(tǒng),通過(guò)暴露該微服務(wù)網(wǎng)關(guān)系統(tǒng),方便我們進(jìn)行相關(guān)的鑒權(quán),安全控制,日志統(tǒng)一處理,易于監(jiān)控的相關(guān)功能。
二、實(shí)現(xiàn)微服務(wù)網(wǎng)關(guān)的技術(shù)
- Nginx系列,Nginx (engine x) 是一個(gè)高性能的HTTP和反向代理web服務(wù)器,同時(shí)也提供了IMAP/POP3/SMTP服務(wù)
- zuul ,Zuul 是 Netflix 出品的一個(gè)基于 JVM 路由和服務(wù)端的負(fù)載均衡器。
- spring-cloud-gateway,是spring 出品的 基于spring 的網(wǎng)關(guān)項(xiàng)目,集成斷路器,路徑重寫(xiě),性能比Zuul好。
我們使用gateway這個(gè)網(wǎng)關(guān)技術(shù),無(wú)縫銜接到基于spring cloud的微服務(wù)開(kāi)發(fā)中來(lái)。
三、微服務(wù)網(wǎng)關(guān)跨域配置
1. 配置文件:application.yml(在網(wǎng)關(guān)中開(kāi)啟跨域訪(fǎng)問(wèn)功能)
修改application.yml ,在spring.cloud.gateway節(jié)點(diǎn)添加配置
# 網(wǎng)關(guān)跨域配置start---------------------------------
# 開(kāi)啟網(wǎng)關(guān)的跨域功能,具體微服務(wù)上的跨域需要進(jìn)行關(guān)閉,否則無(wú)效
globalcors:
cors-configurations:
'[/**]': # 匹配所有請(qǐng)求
allowedOrigins: "*" # 跨域處理 允許所有的域
allowedMethods: # 支持的方法
- GET
- POST
- PUT
- DELETE
# 網(wǎng)關(guān)跨域配置end---------------------------------
2. 配置案例
spring:
application:
name: dabing-gateway
cloud:
gateway:
# 網(wǎng)關(guān)跨域配置start---------------------------------
# 開(kāi)啟網(wǎng)關(guān)的跨域功能,具體微服務(wù)上的跨域需要進(jìn)行關(guān)閉,否則無(wú)效
globalcors:
cors-configurations:
'[/**]': # 匹配所有請(qǐng)求
allowedOrigins: "*" # 跨域處理 允許所有的域
allowedMethods: # 支持的方法
- GET
- POST
- PUT
- DELETE
# 網(wǎng)關(guān)跨域配置end---------------------------------
routes:
- id: xxx
uri: lb://xxx
predicates:
- Path=/xxx/**
filters:
- StripPrefix= 1
server:
port: 9090
eureka:
client:
service-url:
defaultZone: http://DabingCloudEurekaServerA:8761/eureka
instance:
prefer-ip-address: true
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot+netty-socketio實(shí)現(xiàn)服務(wù)器端消息推送
這篇文章主要介紹了SpringBoot+netty-socketio實(shí)現(xiàn)服務(wù)器端消息推送,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
spring中對(duì)象注入的三種實(shí)現(xiàn)方式
本文主要介紹了spring中對(duì)象注入的三種實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
Spring Boot FeignClient 如何捕獲業(yè)務(wù)異常信息
這篇文章主要介紹了Spring Boot FeignClient 如何捕獲業(yè)務(wù)異常信息的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
解讀@Scheduled任務(wù)調(diào)度/定時(shí)任務(wù)非分布式
這篇文章主要介紹了解讀@Scheduled任務(wù)調(diào)度/定時(shí)任務(wù)非分布式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
Java中Integer.valueOf,parsetInt() String.valueOf的區(qū)別和結(jié)果代碼解析
本文通過(guò)代碼給大家講解了JAVA中Integer.valueOf, parsetInt() String.valueOf的區(qū)別和結(jié)果,需要的朋友可以參考下2018-05-05
java實(shí)現(xiàn)創(chuàng)建臨時(shí)文件然后在程序退出時(shí)自動(dòng)刪除文件
這篇文章主要介紹了java實(shí)現(xiàn)創(chuàng)建臨時(shí)文件然后在程序退出時(shí)自動(dòng)刪除文件,從個(gè)人項(xiàng)目中提取出來(lái)的,小伙伴們可以直接拿走使用。2015-02-02
從基礎(chǔ)轉(zhuǎn)換與高級(jí)設(shè)置詳解Java中PDF轉(zhuǎn)換為Excel的完整指南
將 PDF 轉(zhuǎn)換為 Excel 是一個(gè)常見(jiàn)需求,本文將展示如何使用 Java 將 PDF 文件轉(zhuǎn)換為 Excel,并提供自定義設(shè)置以?xún)?yōu)化復(fù)雜 PDF 的轉(zhuǎn)換效果,感興趣的小伙伴了解一下2026-03-03

