feat: 添加网关

This commit is contained in:
2025-11-15 23:42:41 +08:00
parent 44e4406acb
commit 74acfc208a
3 changed files with 76 additions and 1 deletions

2
.idea/encodings.xml generated
View File

@@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="Encoding"> <component name="Encoding">
<file url="file://$PROJECT_DIR$/aioj-backend-ai-service/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/aioj-backend-ai-service/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/aioj-backend-client/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/aioj-backend-client/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/aioj-backend-client/src/main/resources" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/aioj-backend-client/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/aioj-backend-common/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/aioj-backend-common/src/main/java" charset="UTF-8" />

View File

@@ -16,5 +16,10 @@
<maven.compiler.target>17</maven.compiler.target> <maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
</dependencies>
</project> </project>

View File

@@ -0,0 +1,68 @@
package cn.meowrain.aioj.backend.gateway.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
import org.springframework.web.util.pattern.PathPatternParser;
import java.util.List;
/**
* 全局 CORS 配置WebFlux 环境使用 CorsWebFilter
*
* WebFlux 不使用 Spring MVC 的 CorsFilter
* 而是使用专门的 CorsWebFilter 处理跨域。
*
* 此配置实现了:
* - 允许任意域名访问AllowedOriginPatterns = "*"
* - 允许所有请求方法GET、POST、PUT...
* - 允许所有请求头
* - 允许跨域携带 CookieAllowCredentials
* - 对所有路径生效(/**
*/
@Configuration
public class CorsConfig {
/**
* 注册全局 CORS 过滤器
*
* @return CorsWebFilter 跨域过滤器
*/
@Bean
public CorsWebFilter corsWebFilter() {
// 创建跨域配置对象
CorsConfiguration corsConfiguration = new CorsConfiguration();
// 允许所有请求方式GET、POST、PUT、DELETE、OPTIONS...
corsConfiguration.addAllowedMethod("*");
// 是否允许携带 Cookie 信息。跨域默认不允许,需要显式开启
corsConfiguration.setAllowCredentials(true);
/**
* 允许跨域的来源域名
* 使用 setAllowedOriginPatterns("*") 是 WebFlux 推荐方式,
* 因为 setAllowedOrigins("*") 在 allowCredentials=true 时会被拦截。
*/
corsConfiguration.setAllowedOriginPatterns(List.of("*"));
// 允许所有请求头,例如 Authorization、Content-Type 等
corsConfiguration.addAllowedHeader("*");
/**
* 基于 URL 的跨域配置源,
* PathPatternParser 用于解析路径模式(更高性能)
*/
UrlBasedCorsConfigurationSource source =
new UrlBasedCorsConfigurationSource(new PathPatternParser());
// 对所有路径应用跨域设置
source.registerCorsConfiguration("/**", corsConfiguration);
// 创建并返回 WebFlux 专用的 CORS 过滤器
return new CorsWebFilter(source);
}
}