如何在 docker的Gateway +spring Boot中配置进行跨域?
时间: 2024-09-07 20:01:08 浏览: 93
在 Docker 中使用 Gateway(如 Spring Cloud Gateway 或 Nginx)配合 Spring Boot 应用进行跨域配置时,通常涉及以下几个步骤:
1. **Spring Boot 配置**:
如果你直接在 Spring Boot 应用中需要处理 CORS,可以在 `application.yml` 或 `application.properties` 文件中添加以下配置:
```yaml
spring:
web:
cors:
enabled: true
origins: '*' # 设置允许的源,星号 (*) 表示所有域名
allowedMethods: '*' # 允许的所有HTTP方法
allowCredentials: true # 是否支持跨域认证
maxAge: 3600 # 跨域请求缓存时间
```
如果想要更细粒度的控制,可以设置具体的origin。
2. **Spring Cloud Gateway 配置**:
在 Gateway 的配置中,你需要通过`@Bean` 注解创建一个 CorsWebFilter,并指定过滤器规则。例如,如果使用全局配置,可以添加以下代码到 Gateway 的启动类(如`Application.java`):
```java
@Bean
public CorsWebFilter corsGlobalFilter() {
return new CorsWebFilter(
builder -> builder
.allowedOrigins("*") // 设置允许的源
.allowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE"))
.allowCredentials(true)
.maxAge(3600)
.build());
}
```
3. **应用 Gateway 到路由**:
在 Gateway 的`Routes`类中,将 CORS 过滤器应用到相应的路由上,比如:
```java
RouterSpec routes = RouterFunctions.route()
.path("/api/**", corsGlobalFilter().andThen(r -> r.rewritePath("/api", "")))
.addRoute(...);
```
4. **重启服务**:
完成配置后,记得重启 Docker 容器以应用新的配置。
阅读全文