天天看点

spring boot 使用cors解决跨域问题

一、概述:

现在的大部分项目都是前后端分离的项目,那么跨域问题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);