spring cloud gateway 处理预检请求未通过访问控制检查 Response to preflight request doesn't pass access control check: It does not have HTTP ok status
时间: 2023-08-12 19:09:38 浏览: 306
spring cloud gateway请求跨域问题解决方案
在 Spring Cloud Gateway 中处理预检请求未通过访问控制检查的问题,可以通过以下步骤进行解决:
1. 添加全局的跨域配置:在 Spring Cloud Gateway 的配置文件中,添加全局的跨域配置,以允许跨域请求。可以使用 `CorsConfigurationSource` 来配置跨域许可信息。示例代码如下:
```java
@Configuration
public class GatewayConfig {
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.addAllowedOrigin("*");
configuration.addAllowedMethod("*");
configuration.addAllowedHeader("*");
configuration.setAllowCredentials(true);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
}
```
上述代码中,我们配置了允许所有的来源、所有的请求方法和请求头,并设置了允许携带凭证(Credentials)。
2. 在 Gateway 路由配置中添加跨域配置:如果你需要对特定的路由进行跨域配置,可以在 Gateway 的路由配置中添加跨域配置。示例代码如下:
```yaml
spring:
cloud:
gateway:
routes:
- id: myRoute
uri: http://example.com
predicates:
- Path=/example/**
filters:
- name: Cors
args:
allowedOrigins: "http://localhost:8080"
allowedMethods: "GET, POST, PUT, DELETE, OPTIONS"
allowedHeaders: "Content-Type"
```
上述代码中,我们在路由配置中添加了 Cors 过滤器,并设置了允许的来源、请求方法和请求头。
通过以上配置,Spring Cloud Gateway 将能够正确处理预检请求,并返回符合访问控制要求的响应,解决 "Response to preflight request doesn't pass access control check: It does not have HTTP ok status" 的问题。请根据实际情况进行相应的调整和配置。
阅读全文