網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
分布式醫(yī)療掛號(hào)系統(tǒng)整合Gateway網(wǎng)關(guān)解決跨域問(wèn)題_其它綜合
作者:Hudie. ? 更新時(shí)間: 2022-06-23 編程語(yǔ)言一、Gateway網(wǎng)關(guān)簡(jiǎn)介
API 網(wǎng)關(guān)是介于客戶端和服務(wù)器端之間的中間層,所有的外部請(qǐng)求都會(huì)先經(jīng)過(guò)API 網(wǎng)關(guān)這一層。也就是說(shuō),API 的實(shí)現(xiàn)方面更多的考慮業(yè)務(wù)邏輯,而安全、性能、監(jiān)控可以交由 API 網(wǎng)關(guān)來(lái)做,這樣既提高業(yè)務(wù)靈活性又不缺安全性。
Spring cloud gateway是spring官方基于Spring 5.0、Spring Boot2.0和Project Reactor等技術(shù)開(kāi)發(fā)的網(wǎng)關(guān),Spring Cloud Gateway旨在為微服務(wù)架構(gòu)提供簡(jiǎn)單、有效和統(tǒng)一的API路由管理方式,Spring Cloud Gateway作為Spring Cloud生態(tài)系統(tǒng)中的網(wǎng)關(guān),目標(biāo)是替代Netflix Zuul,其不僅提供統(tǒng)一的路由方式,并且還基于Filer鏈的方式提供了網(wǎng)關(guān)基本的功能,例如:安全、監(jiān)控/埋點(diǎn)、限流等。
二、Gateway使用步驟
步驟1:搭建模塊并引入依賴
在項(xiàng)目中使用Maven模塊,搭建server-gateway模塊。
由于Gateway也需要在Nacos中進(jìn)行注冊(cè),所以在引入Gateway依賴的同時(shí),也要引入Naocs依賴。
<!--Gateway--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <!-- 服務(wù)注冊(cè) --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
步驟2:添加配置文件
下面的配置表示將網(wǎng)關(guān)服務(wù)端口設(shè)置為9000后,配置了兩個(gè)路由id:
# 服務(wù)端口
server.port=9000
# 服務(wù)名
spring.application.name=service-gateway
# nacos服務(wù)地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#使用服務(wù)發(fā)現(xiàn)路由
spring.cloud.gateway.discovery.locator.enabled=true
#設(shè)置路由id
spring.cloud.gateway.routes[0].id=service-hosp
#設(shè)置路由的uri
spring.cloud.gateway.routes[0].uri=lb://service-hosp
#設(shè)置路由斷言,代理servicerId為auth-service的/auth/路徑
spring.cloud.gateway.routes[0].predicates= Path=/*/hosp/**
#設(shè)置路由id
spring.cloud.gateway.routes[1].id=service-cmn
#設(shè)置路由的uri
spring.cloud.gateway.routes[1].uri=lb://service-cmn
#設(shè)置路由斷言,代理servicerId為auth-service的/auth/路徑
spring.cloud.gateway.routes[1].predicates= Path=/*/cmn/**
步驟3:創(chuàng)建啟動(dòng)類
@SpringBootApplication
public class ServerGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(ServerGatewayApplication.class, args);
}
}
網(wǎng)關(guān)初步測(cè)試
后端服務(wù)配置好后啟動(dòng)相應(yīng)微服務(wù),在前端dev.env.js文件中,也將端口設(shè)置為9000與后端對(duì)應(yīng):
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"',
BASE_API: '"http://localhost:9000"',
})
關(guān)閉之前配置的Nginx,在不同端口之前發(fā)送請(qǐng)求,都可以成功訪問(wèn):
三、Gateway解決跨域問(wèn)題
在service_gateway模塊創(chuàng)建配置類,寫(xiě)入下面的內(nèi)容:
@Configuration
public class CorsConfig {
@Bean
public CorsWebFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.addAllowedMethod("*");
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
source.registerCorsConfiguration("/**", config);
return new CorsWebFilter(source);
}
}
配置好后,將之前項(xiàng)目中所有Controller中的@CrossOrigin注解刪除掉。
再次啟動(dòng)后端微服務(wù)和前端項(xiàng)目,切換不同選項(xiàng)卡,發(fā)現(xiàn)跨域問(wèn)題被成功解決掉:
原文鏈接:https://guoqianliang.blog.csdn.net/article/details/116268657
相關(guān)推薦
- 2023-10-16 后端Long類型傳到前端精度丟失的問(wèn)題
- 2022-11-04 詳解linux命令查看服務(wù)器上的實(shí)時(shí)日志_服務(wù)器其它
- 2022-10-17 Android數(shù)據(jù)存儲(chǔ)方式操作模式解析_Android
- 2022-11-22 在?React?項(xiàng)目中全量使用?Hooks的方法_React
- 2022-07-07 opencv學(xué)習(xí)筆記C++繪制灰度直方圖_C 語(yǔ)言
- 2022-02-19 DevTools 無(wú)法加載 SourceMap 錯(cuò)誤:狀態(tài)代碼 404,netERR_HTTP_RE
- 2022-09-07 python?正則表達(dá)式如何實(shí)現(xiàn)重疊匹配_python
- 2022-10-22 BroadcastReceiver靜態(tài)注冊(cè)案例詳解_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支