解决跨域问题
This commit is contained in:
parent
7755c6a77b
commit
3d07628050
@ -3,11 +3,57 @@ package cn.iocoder.yudao.gateway;
|
|||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
|
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;
|
||||||
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
public class GatewayServerApplication {
|
public class GatewayServerApplication {
|
||||||
|
|
||||||
|
// ----------------------------- 解决跨域 Begin -----------------------------
|
||||||
|
|
||||||
|
private static final String ALL = "*";
|
||||||
|
private static final String MAX_AGE = "3600L";
|
||||||
|
|
||||||
|
|
||||||
|
@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);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------- 解决跨域 End -----------------------------
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
// 启动 Spring Boot 应用
|
// 启动 Spring Boot 应用
|
||||||
SpringApplication.run(GatewayServerApplication.class, args);
|
SpringApplication.run(GatewayServerApplication.class, args);
|
||||||
|
Loading…
Reference in New Issue
Block a user