spring cloud gateway跨域全局CORS配置
在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配置相关推荐
- Spring全家桶-Spring Security之跨域与CORS与防护
Spring全家桶-Spring Security之跨域与CORS Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以 ...
- 从零开始学 Java - Spring MVC 实现跨域资源 CORS 请求
论职业的重要性 问:为什么所有家长都希望自己的孩子成为公务员? 答:体面.有权.有钱又悠闲. 问:为什么所有家长都希望自己的孩子成为律师或医生? 答:体面.有钱.有技能. 问:为什么所有家长都不怎么知 ...
- spring cloud gateway集成hystrix全局断路器
pom.xml添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifact ...
- spring cloud gateway使用 uri: lb://方式配置时,服务名的特殊要求
在gateway中配置uri配置有三种方式,包括 第一种:ws(websocket)方式: uri: ws://localhost:9000 第二种:http方式: uri: http://local ...
- Spring cloud zuul跨域(一)
项目背景: 我们有web和大屏,以及移动端,需要访问微服务接口. 然而大屏时自己打开的网页,在网页中通过js调用我的webapi.出现了跨域情况. 原因: 出现这个问题,是由于跨域请求有2次请求. 第 ...
- Spring Cloud Gateway的全局异常处理
Spring Cloud Gateway中的全局异常处理不能直接用@ControllerAdvice来处理,通过跟踪异常信息的抛出,找到对应的源码,自定义一些处理逻辑来符合业务的需求. 网关都是给接口 ...
- 网关 翻译版本 spring cloud gateway
Spring Cloud Gateway 官网原文地址 https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html ...
- Spring Cloud Gateway 入门
认识 Spring Cloud Gateway Spring Cloud Gateway 是一款基于 Spring 5,Project Reactor 以及 Spring Boot 2 构建的 API ...
- 微服务网关spring cloud gateway入门详解
1.API网关 API 网关是一个处于应用程序或服务( REST API 接口服务)之前的系统,用来管理授权.访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的 ...
最新文章
- 【业界】Facebook的基础AI算法是如何驱动社交网络的发展?
- VC中的TRACE宏:
- iosttableViewCell右侧的箭头,圆形等
- myelicesp stepover不能点_市区6处垃圾临时转运点被撤销
- 通向架构师的道路(第五天)之tomcat集群-群猫乱舞
- SAP CRM Fiori应用 my Opportunity的扩展
- 用JavaScript语言判断一个三位数是否为水仙花数
- 使用 bind 搭建DNS 服务器
- python输入时间限制_用Python计算用户输入时间
- 控制系统数字仿真与CAD-第二次实验-附完整代码
- 4.SOA架构:服务和微服务分析及设计--- Web服务及微服务的分析与建模
- 使用片段嵌入进行文档搜索
- 解决flume整合kafka报错Attempt to heart beat failed since member id is not valid, reset it and try to re-jo
- 基于java的邮编区号管理系统
- 线下娱乐“换血”,沉浸式体验会成为下一个10年的主题吗?
- iPhone出现白苹果怎么修复?三分钟教你如何修复手机白苹果
- Ubuntu 20 / 21 - KDE 配置Nvidia 独立显卡
- syntactic sugar - 语法糖 - 糖衣语法
- (TT三)Nginx+fastDFS
- 罗克韦尔AB PLC RSLogix5000中计数器指令使用方法介绍
热门文章
- 工作65:导航栏使用
- 前端学习(1247):购物车1
- shiro学习(10):servelet实现权限认证一
- mybatis学习(7):Windows下安装MySQL详细教程
- 第四十一期:从Windows到鸿蒙——操作系统的前世与今生
- java学习(14):java命名规范
- web app小程序各种客服窗口插件
- python爬取酷狗音乐top500_Python爬取酷狗Top500的歌曲!够你吹个小牛皮了吧!
- 笔记本电脑摄像头不能用_聊一款想代替笔记本电脑的产品
- 算法之快速排序(递归和非递归)