前言
记录 Spring Cloud Gateway
整合 Spring Security
及 Oauth2
时跨越问题相关解决过程
项目架构
为了不直接暴露 API
及保护服务器,所有访问都需要经过网关,由网关转发请求到服务器及返回服务器的响应
初遇跨域
跨域其实是很常见的问题,在 Spring
中可以简单的写个 @CrossOrigin
或者全局拦截器之类的解决掉,但在 Spring Cloud Gateway
中这行不通,写注解等方式在路由转发时还是会跨域
官方文档 给出相关跨域配置(实测不好用)
spring:
cloud:
gateway:
globalcors:
corsConfigurations:
'[/**]':
allowedOrigins: "https://docs.spring.io"
allowedMethods:
- GET
不过你可以轻易的通过Google搜索到如下代码
import org.springframework.context.annotation.Bean;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
@Bean
public CorsWebFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.addAllowedOrigin("*");
config.setAllowCredentials(true