📄 服务配置 cors 跨域
内部资料,请扫码登录
pigcloud
本章文档对应视频 📺 网关跨域配置
# 微服务版本: 网关跨域支持
如果不知道什么是跨域(CORS),建议先阅读以下内容 跨域资源共享 CORS 详解 (opens new window) HTTP 访问控制(CORS) (opens new window)
nacos pigx-gateway-dev.yml 增加如下配置
spring:
cloud:
gateway:
globalcors:
corsConfigurations:
"[/**]":
allowedOriginPatterns: "*"
allowed-methods: "*"
allowed-headers: "*"
allow-credentials: true
exposedHeaders: "Content-Disposition,Content-Type,Cache-Control"
以上配置可作为开发环境使用,生成环境建议你根据实际情况修改(请先理解 CORS,并参考 org.springframework.cloud.gateway.config.GlobalCorsProperties) 跨域时会产生预检请求(Pre-Flight Request),这样就会对你的服务器产生额外的网络请求。如果可以通过部署手段解决跨域,则可以关闭跨域支持,方法是把以上配置信息清理掉。
# 图形化开启跨域
v5.6 后版本支持,通过路由管理模块开启指定服务的跨域访问
# 单体项目配置跨域
- pigx-common-security 增加跨域配置
<!-- pigx-common-security 增加相关依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<optional>true</optional>
</dependency>
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOriginPattern("*");
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
corsConfiguration.setAllowCredentials(true);
source.registerCorsConfiguration("/**", corsConfiguration);
return new CorsFilter(source);
}
- AuthorizationServerConfiguration 配置运行 OPTIONS 允许放行
- 登录 token 输出增加 header
httpResponse.getHeaders().add("Access-Control-Allow-Origin", "*");