Spring Boot 3跨域方案详解:告别CORS烦恼
在Spring Boot 3中,跨域问题可以通过配置一个WebFilter
来解决,这个过滤器会处理HTTP请求并添加必要的跨域头。以下是一个简单的实现示例:
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebFilter;
import org.springframework.web.server.WebFilterChain;
import reactor.core.publisher.Mono;
@Component
public class CorsFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
// 添加跨域响应头
exchange.getResponse().getHeaders().set("Access-Control-Allow-Origin", "*");
exchange.getResponse().getHeaders().set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
exchange.getResponse().getHeaders().set("Access-Control-Allow-Headers", "Content-Type");
// 如果是OPTIONS请求,直接返回
if ("OPTIONS".equals(exchange.getRequest().getMethodValue())) {
exchange.getResponse().setStatusCode(200);
return exchange.getResponse().setComplete();
}
// 继续执行其他过滤器链
return chain.filter(exchange);
}
}
在这个例子中,我们创建了一个名为CorsFilter
的类,该类实现了WebFilter
接口。我们在filter
方法中手动设置了必要的跨域响应头,并允许所有源("*"
)进行跨域请求。如果请求方法是OPTIONS
,我们直接设置响应状态为200并结束响应,以满足预检请求。
这样配置后,你的Spring Boot 3应用将能够正确处理跨域请求,不再需要CORS配置文件或复杂的配置。
评论已关闭