一、概述:
现在的大部分项目都是前后端分离的项目,那么跨域问题CORS是一定会碰到的,那么spring boot已提供跨域问题的解决方案。【跨域问题:跨源资源共享(CORS)是由大多数浏览器实现的W3C规范,它允许您以灵活的方式指定授权的跨域请求类型,而不是使用一些不太安全和功能不太强大的方法如IFRAME或JSONP】
二、springboot提供的解决方案:
1、@CrossOrigin注解:此注解可以作用到类上,也可以作用到方法上。
例:
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/findAll")
@CrossOrigin//允许跨域请求注解,此注解可以加到类上,也可以加到方法上
public List<User> findAll(){
return userService.findAll();
}
}
2、使用WebMvcConfigurer的addCorsMappings方法配置CorsInterceptor:前后端分离的项目,每个请求都是跨域问题,用此方法可以高效的批量实现跨域问题,避免每个Controller都加@CrossOrigin注解。
/**
* 跨域访问
*/
@Configuration
public class CorsConfig implements WebMvcConfigurer {
public void addCorsMappings(CorsRegistry registry) {
//设置允许跨域的路径,*表示任意
registry.addMapping("/**")
//设置允许跨域请求的域名,*表示任意
.allowedOriginPatterns("*")
//是否语序cookie
.allowCredentials(true)
//设置允许的请求方式
.allowedMethods("GET","POST","DELETE","PUT")
//设置允许的header属性,*表示任意
.allowedHeaders("*")
//跨域允许时间
.maxAge(3600);