在Spring 5 Webflux中,配置CORS,可以通过自定义WebFilter实现:

注:此种写法需真实跨域访问,监控header中才会带相应属性。

代码实现方式

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.web.cors.reactive.CorsUtils;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebFilter;
import org.springframework.web.server.WebFilterChain;
import org.springframework.http.HttpMethod;
import reactor.core.publisher.Mono;import static org.springframework.web.cors.CorsConfiguration.ALL;
public class XXXApplication{
public static void main(String[] args) {SpringApplication.run(XXXApplication.class, args);
}
private static final String MAX_AGE = "18000L";
@Bean
public WebFilter corsFilter() {return (ServerWebExchange ctx, WebFilterChain chain) -> {ServerHttpRequest request = ctx.getRequest();if (!CorsUtils.isCorsRequest(request)) {return chain.filter(ctx);}HttpHeaders requestHeaders = request.getHeaders();ServerHttpResponse response = ctx.getResponse();HttpMethod requestMethod = requestHeaders.getAccessControlRequestMethod();HttpHeaders headers = response.getHeaders();headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, requestHeaders.getOrigin());headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, requestHeaders.getAccessControlRequestHeaders());if (requestMethod != null) {headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, requestMethod.name());}headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, ALL);headers.add(HttpHeaders.ACCESS_CONTROL_MAX_AGE, MAX_AGE);if (request.getMethod() == HttpMethod.OPTIONS) {response.setStatusCode(HttpStatus.OK);return Mono.empty();}return chain.filter(ctx);};
}
}

配置实现方式

网上还提到一种配置写法,实测好用(感谢评论兄弟fiberhuo补充):

spring:cloud:gateway:globalcors:corsConfigurations:'[/**]':allowedOrigins: "*"allowedMethods: "*"allowedHeaders: "*"

spring cloud gateway跨域全局CORS配置相关推荐

  1. Spring全家桶-Spring Security之跨域与CORS与防护

    Spring全家桶-Spring Security之跨域与CORS Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以 ...

  2. 从零开始学 Java - Spring MVC 实现跨域资源 CORS 请求

    论职业的重要性 问:为什么所有家长都希望自己的孩子成为公务员? 答:体面.有权.有钱又悠闲. 问:为什么所有家长都希望自己的孩子成为律师或医生? 答:体面.有钱.有技能. 问:为什么所有家长都不怎么知 ...

  3. spring cloud gateway集成hystrix全局断路器

    pom.xml添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifact ...

  4. spring cloud gateway使用 uri: lb://方式配置时,服务名的特殊要求

    在gateway中配置uri配置有三种方式,包括 第一种:ws(websocket)方式: uri: ws://localhost:9000 第二种:http方式: uri: http://local ...

  5. Spring cloud zuul跨域(一)

    项目背景: 我们有web和大屏,以及移动端,需要访问微服务接口. 然而大屏时自己打开的网页,在网页中通过js调用我的webapi.出现了跨域情况. 原因: 出现这个问题,是由于跨域请求有2次请求. 第 ...

  6. Spring Cloud Gateway的全局异常处理

    Spring Cloud Gateway中的全局异常处理不能直接用@ControllerAdvice来处理,通过跟踪异常信息的抛出,找到对应的源码,自定义一些处理逻辑来符合业务的需求. 网关都是给接口 ...

  7. 网关 翻译版本 spring cloud gateway

    Spring Cloud Gateway 官网原文地址 https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html ...

  8. Spring Cloud Gateway 入门

    认识 Spring Cloud Gateway Spring Cloud Gateway 是一款基于 Spring 5,Project Reactor 以及 Spring Boot 2 构建的 API ...

  9. 微服务网关spring cloud gateway入门详解

    1.API网关 API 网关是一个处于应用程序或服务( REST API 接口服务)之前的系统,用来管理授权.访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的 ...

最新文章

  1. 【业界】Facebook的基础AI算法是如何驱动社交网络的发展?
  2. VC中的TRACE宏:
  3. iosttableViewCell右侧的箭头,圆形等
  4. myelicesp stepover不能点_市区6处垃圾临时转运点被撤销
  5. 通向架构师的道路(第五天)之tomcat集群-群猫乱舞
  6. SAP CRM Fiori应用 my Opportunity的扩展
  7. 用JavaScript语言判断一个三位数是否为水仙花数
  8. 使用 bind 搭建DNS 服务器
  9. python输入时间限制_用Python计算用户输入时间
  10. 控制系统数字仿真与CAD-第二次实验-附完整代码
  11. 4.SOA架构:服务和微服务分析及设计--- Web服务及微服务的分析与建模
  12. 使用片段嵌入进行文档搜索
  13. 解决flume整合kafka报错Attempt to heart beat failed since member id is not valid, reset it and try to re-jo
  14. 基于java的邮编区号管理系统
  15. 线下娱乐“换血”,沉浸式体验会成为下一个10年的主题吗?
  16. iPhone出现白苹果怎么修复?三分钟教你如何修复手机白苹果
  17. Ubuntu 20 / 21 - KDE 配置Nvidia 独立显卡
  18. syntactic sugar - 语法糖 - 糖衣语法
  19. (TT三)Nginx+fastDFS
  20. 罗克韦尔AB PLC RSLogix5000中计数器指令使用方法介绍

热门文章

  1. 工作65:导航栏使用
  2. 前端学习(1247):购物车1
  3. shiro学习(10):servelet实现权限认证一
  4. mybatis学习(7):Windows下安装MySQL详细教程
  5. 第四十一期:从Windows到鸿蒙——操作系统的前世与今生
  6. java学习(14):java命名规范
  7. web app小程序各种客服窗口插件
  8. python爬取酷狗音乐top500_Python爬取酷狗Top500的歌曲!够你吹个小牛皮了吧!
  9. 笔记本电脑摄像头不能用_聊一款想代替笔记本电脑的产品
  10. 算法之快速排序(递归和非递归)