提交 28611cc2 authored 作者: 李秋林's avatar 李秋林

关闭跨域

上级 17e049af
package com.sfa.gateway; //package com.sfa.gateway;
//
import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; //import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders; //import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod; //import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus; //import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest; //import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse; //import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.web.cors.reactive.CorsUtils; //import org.springframework.web.cors.reactive.CorsUtils;
import org.springframework.web.server.ServerWebExchange; //import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebFilter; //import org.springframework.web.server.WebFilter;
import org.springframework.web.server.WebFilterChain; //import org.springframework.web.server.WebFilterChain;
import reactor.core.publisher.Mono; //import reactor.core.publisher.Mono;
//
/** ///**
* @author John // * @author John
* @date 2022/6/27 // * @date 2022/6/27
* @description 跨域配置 // * @description 跨域配置
*/ // */
@Configuration //@Configuration
public class CorsConfig { //public class CorsConfig {
@Bean // @Bean
public WebFilter corsFilter() { // public WebFilter corsFilter() {
return (ServerWebExchange ctx, WebFilterChain chain) -> { // return (ServerWebExchange ctx, WebFilterChain chain) -> {
ServerHttpRequest request = ctx.getRequest(); // ServerHttpRequest request = ctx.getRequest();
if (CorsUtils.isCorsRequest(request)) { // if (CorsUtils.isCorsRequest(request)) {
HttpHeaders requestHeaders = request.getHeaders(); // HttpHeaders requestHeaders = request.getHeaders();
ServerHttpResponse response = ctx.getResponse(); // ServerHttpResponse response = ctx.getResponse();
HttpMethod requestMethod = requestHeaders.getAccessControlRequestMethod(); // HttpMethod requestMethod = requestHeaders.getAccessControlRequestMethod();
HttpHeaders headers = response.getHeaders(); // HttpHeaders headers = response.getHeaders();
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, requestHeaders.getOrigin()); // headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, requestHeaders.getOrigin());
headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, // headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS,
requestHeaders.getAccessControlRequestHeaders()); // requestHeaders.getAccessControlRequestHeaders());
if (requestMethod != null) { // if (requestMethod != null) {
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, requestMethod.name()); // headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, requestMethod.name());
} // }
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true"); // headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "*"); // headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "*");
if (request.getMethod() == HttpMethod.OPTIONS) { // if (request.getMethod() == HttpMethod.OPTIONS) {
response.setStatusCode(HttpStatus.OK); // response.setStatusCode(HttpStatus.OK);
return Mono.empty(); // return Mono.empty();
} // }
} // }
return chain.filter(ctx); // return chain.filter(ctx);
}; // };
} // }
} //}
\ No newline at end of file \ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论