SpringBoot配置跨域
1)@CrossOrigin注解配置跨域(局部配置)
写在 方法 上,对一个方法配置跨域
import org.springframework.web.bind.annotation.*;@RestController
public class TestController {//对当前接口配置跨域@CrossOrigin@GetMapping("/hello")String getHello(){return "get hello";}
}
写在控制层类上,对这个Controller类中所有处理请求方法配置跨域
import org.springframework.web.bind.annotation.*;//对当前接口配置跨域
@CrossOrigin
@RestController
public class TestController {@GetMapping("/hello")String getHello(){return "get hello";}@PostMapping("/hello")String postHello(){return "post hello";}
}
2)自定义CorsFilter拦截器配置跨域(全局配置)
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;@Configuration
public class CorsConfig {@BeanCorsFilter corsFilter(){CorsConfiguration corsConfiguration = new CorsConfiguration();corsConfiguration.addAllowedOrigin("*");corsConfiguration.addAllowedHeader("*");corsConfiguration.addAllowedMethod("*");UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/**",corsConfiguration);return new CorsFilter(source);}
}
3)实现WebMvcConfigurer接口配置跨域(全局配置)
通过实现addCorsMappings方法进行配置
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class CorsConfiguration implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOriginPatterns("*").allowedHeaders("*").allowedMethods("*").allowCredentials(true) .maxAge(3600);}
}