springboot配置Cors跨域请求

通过WebMvcConfigurer接口的addCorsMappings方法进行全局配置:

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**") // 允许所有路径的跨域请求
                .allowedOrigins("http://192.168.3.23:9000") // 允许来自http://192.168.3.23:9000的请求
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "HEAD") // 允许的HTTP方法
                .allowCredentials(true) // 是否允许发送Cookie
                .maxAge(3600); // 预检请求的缓存时间(秒)
    }
}

通过定义一个CorsFilter Bean进行配置:

@Bean  
public CorsFilter corsFilter() {  
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();  
    CorsConfiguration config = new CorsConfiguration();  
    config.setAllowCredentials(true);  
    config.addAllowedOrigin("http://192.168.3.23:9000"); // 允许来自http://192.168.3.23:9000的请求
    config.addAllowedHeader("*");  
    config.addAllowedMethod("OPTIONS", "GET", "POST", "PUT", "DELETE", "PATCH");  
    source.registerCorsConfiguration("/**", config);  
    return new CorsFilter(source);  
}  

这两种方式虽然都能实现跨域配置,但它们的应用场景和特点有所不同:

通过WebMvcConfigurer接口的addCorsMappings方法进行全局配置:这种方式适用于需要对多个HandlerMapping进行统一CORS配置的场景。它的作用范围是全局的,可以影响到所有的内置配置的HandlerMapping。

通过定义一个CorsFilter Bean进行配置:这种方式更为灵活,它是一个完全独立的Filter,与其它配置不冲突也没有关联,最终委托给CorsProcessor来完成。这种方式适合需要对CORS进行更细粒度控制的场景,例如根据不同的URL模式应用不同的CORS配置。

总的来说,如果你的应用需要统一的CORS策略,且不涉及复杂的条件判断,使用WebMvcConfigurer的方式会更加简洁。而如果你的应用有更复杂的CORS需求,或者需要在运行时动态调整CORS策略,那么定义一个CorsFilter Bean可能会更加合适。

ps:如果是前端的websocket出现跨域异常,需要在WebSocketConfig中的registerStompEndpoints添加setAllowedOriginPatterns(“*”)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值