From 443667ef04bedfdf178927f29524125c0d1276e1 Mon Sep 17 00:00:00 2001 From: dongzeliang <2746733890@qq.com> Date: Fri, 17 Jan 2025 11:27:04 +0800 Subject: [PATCH] =?UTF-8?q?feat()=EF=BC=9A=E5=A2=9E=E5=8A=A0=E8=B7=A8?= =?UTF-8?q?=E5=9F=9F=E8=AF=B7=E6=B1=82=E9=85=8D=E7=BD=AE=EF=BC=8C=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=85=81=E8=AE=B8=E6=89=80=E6=9C=89=E8=B7=A8=E5=9F=9F?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/muyu/gateway/config/CorsConfig.java | 76 +++++++++++++++++++ .../src/main/resources/bootstrap.yml | 5 -- 2 files changed, 76 insertions(+), 5 deletions(-) create mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/config/CorsConfig.java diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/config/CorsConfig.java b/cloud-gateway/src/main/java/com/muyu/gateway/config/CorsConfig.java new file mode 100644 index 0000000..dfb020d --- /dev/null +++ b/cloud-gateway/src/main/java/com/muyu/gateway/config/CorsConfig.java @@ -0,0 +1,76 @@ +package com.muyu.gateway.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +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 reactor.core.publisher.Mono; + +/** + * 跨域设置 + * + * @author muyu + */ +@Configuration +public class CorsConfig { + + /** + * 这里为支持的请求头,如果有自定义的header字段请自己添加 + */ + private static final String ALLOWED_HEADERS = "X-Requested-With, Content-Type, Authorization, credential, X-XSRF-TOKEN, token, Admin-Token, App-Token"; + + private static final String ALLOWED_METHODS = "GET,POST,PUT,DELETE,OPTIONS,HEAD"; + + private static final String ALLOWED_ORIGIN = "*"; + + private static final String ALLOWED_EXPOSE = "*"; + + private static final String MAX_AGE = "18000L"; + + @Bean + public WebFilter corsFilter() { + + return (ServerWebExchange ctx, WebFilterChain chain) -> { + + ServerHttpRequest request = ctx.getRequest(); + + if (CorsUtils.isCorsRequest(request)) { + + ServerHttpResponse response = ctx.getResponse(); + + HttpHeaders headers = response.getHeaders(); + + headers.add("Access-Control-Allow-Headers", ALLOWED_HEADERS); + + headers.add("Access-Control-Allow-Methods", ALLOWED_METHODS); + + headers.add("Access-Control-Allow-Origin", ALLOWED_ORIGIN); + + headers.add("Access-Control-Expose-Headers", ALLOWED_EXPOSE); + + headers.add("Access-Control-Max-Age", MAX_AGE); + + headers.add("Access-Control-Allow-Credentials", "true"); + + if (request.getMethod() == HttpMethod.OPTIONS) { + + response.setStatusCode(HttpStatus.OK); + + return Mono.empty(); + + } + + } + return chain.filter(ctx); + }; + + } + +} \ No newline at end of file diff --git a/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml index f23e0b2..1aa95bc 100644 --- a/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml +++ b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml @@ -8,13 +8,8 @@ nacos: user-name: nacos password: nacos namespace: muyu-cloud -# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all # Spring spring: - amqp: - deserialization: - trust: - all: true main: allow-bean-definition-overriding: true application: