跨域访问的配置

论坛 期权论坛 脚本     
匿名技术用户   2020-12-29 23:09   11   0

zuul网关gateway网关

public class CorsWebFilter implements WebFilter {

private static final String ALL = "*";

private static final String MAX_AGE = "18000L";

@Override

public Mono<Void> filter(ServerWebExchange ctx, WebFilterChain chain) {

ServerHttpRequest request = ctx.getRequest();

String path=request.getPath().value();

ServerHttpResponse response = ctx.getResponse();

if("/favicon.ico".equals(path)) {

response.setStatusCode(HttpStatus.OK);

return Mono.empty();

}

if (!CorsUtils.isCorsRequest(request)) {

return chain.filter(ctx);

}

HttpHeaders requestHeaders = request.getHeaders();

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);

}

}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP