Spring Boot 3跨域方案详解:告别CORS烦恼
    		       		warning:
    		            这篇文章距离上次修改已过425天,其中的内容可能已经有所变动。
    		        
        		                
                在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配置文件或复杂的配置。
评论已关闭