1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package com.szwl;
- import org.apache.commons.lang.StringUtils;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.ComponentScan;
- 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;
- @Configuration
- @EnableAutoConfiguration //启用自动配置 该框架就能够进行行为的配置,以引导应用程序的启动与运行, 根据导入的starter-pom 自动加载配置
- @ComponentScan
- public class GatewayServerApplication {
- public static void main(String[] args) {
- SpringApplication.run(GatewayServerApplication.class, args);
- }
- private static final String ALL = "*";
- 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, ALL);
- // headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, requestHeaders.getOrigin());
- String requestHeadersAllowHeaders = StringUtils.strip(String.valueOf(requestHeaders.get("Access-Control-Request-Headers")), "[]");
- // log.info("HttpHeaders:",requestHeadersAllowHeaders);
- headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, requestHeadersAllowHeaders);
- // headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, requestHeaders.getAccessControlRequestHeaders());
- // headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, ALL);
- 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);
- HttpMethod requestMethod2 = request.getMethod();
- if (request.getMethod() == HttpMethod.OPTIONS) {
- response.setStatusCode(HttpStatus.OK);
- return Mono.empty();
- }
- return chain.filter(ctx);
- };
- }
-
- }
|