在Spring 5 Webflux中启用CORS?

如何在Spring 5 Webflux项目中启用CORS?

我找不到任何适当的文档。

回答:

我使用此自定义过滤器成功:

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;

@Configuration

public class CorsConfiguration {

private static final String ALLOWED_HEADERS = "x-requested-with, authorization, Content-Type, Authorization, credential, X-XSRF-TOKEN";

private static final String ALLOWED_METHODS = "GET, PUT, POST, DELETE, OPTIONS";

private static final String ALLOWED_ORIGIN = "*";

private static final String MAX_AGE = "3600";

@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-Origin", ALLOWED_ORIGIN);

headers.add("Access-Control-Allow-Methods", ALLOWED_METHODS);

headers.add("Access-Control-Max-Age", MAX_AGE);

headers.add("Access-Control-Allow-Headers",ALLOWED_HEADERS);

if (request.getMethod() == HttpMethod.OPTIONS) {

response.setStatusCode(HttpStatus.OK);

return Mono.empty();

}

}

return chain.filter(ctx);

};

}

}

并且org.springframework.boot:spring-boot-starter-web不应作为依赖项包含在内-过滤器无法使用。

以上是 在Spring 5 Webflux中启用CORS? 的全部内容, 来源链接: utcz.com/qa/420231.html

回到顶部