【Spring Cloud】Spring Cloud Gateway 中配置跨域

Spring Cloud Gateway 中配置跨域

开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。API网关作为所有请求的入口,请求量大,我们可以通过对并发访问的请求进行限速来保护系统的可用性。

在Spring Cloud Gateway 中配置跨域有两种方式,分别是代码配置方式和配置文件方式。

一、代码配置方式配置跨域

代码配置方式配置跨域,代码清单如下所示:

java 复制代码
@Configuration
public class CorsConfig {
	@Bean
	public WebFilter corsFilter() {
		return (ServerWebExchange ctx, WebFilterChain chain) -> {
			ServerHttpRequest request = ctx.getRequest();
			if(CorsUtils.isCorsRequest(request)) {
				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, "*");
				if(request.getMethod() == HttpMethod.OPTIONS){
					response.setStatusCode(HttpStatus.OK);
					return Mono.empty();
				}
			}
			return chain.filter(ctx);
		};
	}
}

二、配置文件方式配置跨域

配置文件方式配置跨域,代码清单如下所示:

java 复制代码
spring:
	cloud:
		gateway:
			globalcors:
				corsConfigurations:
					'[/**]':
						allowedOrigins: "*"
						exposedHeaders:
						- content-type
						allowedHeaders:
						- content-type
						allowCredentials: true
						allowedMethods:
						- GET
						- OPTIONS
						- PUT
						- DELETE
						- POST

本文完结!

相关推荐
月下雨(Moonlit Rain)3 分钟前
宇宙飞船游戏项目
python·游戏·pygame
清水白石0085 分钟前
测试金字塔实战:单元测试、集成测试与E2E测试的边界与平衡
python·单元测试·log4j·集成测试
布局呆星5 分钟前
Python 入门:FastAPI + SQLite3 + Requests 基础教学
python·sqlite·fastapi
先做个垃圾出来………5 分钟前
Flask框架特点对比
后端·python·flask
Mr -老鬼11 分钟前
RustSalvo框架上传文件接口(带参数)400错误解决方案
java·前端·python
nix.gnehc13 分钟前
Spring Cloud + Nacos 在 K8s+物理机/虚拟机多部署形态下的优雅适配(零业务改动)
spring cloud·容器·kubernetes
海天一色y15 分钟前
使用 Python + Tkinter 打造“猫狗大战“回合制策略游戏
开发语言·python·游戏
好奇心害死薛猫18 分钟前
全网首发_api方式flashvsr批量视频高清增强修复教程
python·ai·音视频
郝学胜-神的一滴19 分钟前
计算思维:数字时代的超级能力
开发语言·数据结构·c++·人工智能·python·算法
尘缘浮梦24 分钟前
websockets处理流式接口
开发语言·python