SpringBoot解决跨域问题的三种方式

144 阅读1分钟

跨域

跨域问题是出现是没有满足同源策略 同源策略:协议、域名、端口3个都相同就是同源

Vue:http://localhost:8080

SpringBoot:http://localhost:8181/list

CORS:Cross Origin Resource Sharing

这两个请求端口号不同,就会产生跨域问题

SpringBoot项目中解决跨域的3种方案

1、在目标方法上添加@CrossOrigin注解

@CrossOrigin

2、添加CORS过滤器

//跨域配置
@Configuration
public class CorsConfig {

    @Bean
    public CorsFilter corsFilter() {
      CorsConfiguration configuration =new CorsConfiguration();
      configuration.addAllowedOrigin("*");
      configuration.addAllowedHeader("*");
      configuration.addAllowedMethod("*");
      UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
      source.registerCorsConfiguration("/**",configuration);
      return new CorsFilter(source);
    }
}

3、实现WebMvcConfigure接口,重写addCorsMappings方法

Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
                .allowCredentials(true)
                .maxAge(3600)
                .allowedHeaders("*");
    }
}