SpringBoot解决cors跨域问题
1.使用@CrossOrigin注解实现
(1).对单个接口配置CORS
1 @CrossOrigin(origins = {"*"}) 2 @PostMapping("/hello") 3 @ResponseBody 4 public ResultVO hello() { 5 return new ResultVO(1,"成功"); 6 }
(2).对某个Controller下的所有接口配置CORS
@CrossOrigin @Controller public class HelloController { }
2.配置全局的CORS
(1)添加配置类
1 package com.yltx.api.config; 2 3 import org.springframework.context.annotation.Bean; 4 import org.springframework.context.annotation.Configuration; 5 import org.springframework.web.cors.CorsConfiguration; 6 import org.springframework.web.cors.UrlBasedCorsConfigurationSource; 7 import org.springframework.web.filter.CorsFilter; 8 9 /** 10 * @Author: Hujh 11 * @Date: 2019/5/9 15:49 12 * @Description: Cors跨域配置 13 */ 14 @Configuration 15 public class CorsConfig { 16 @Bean 17 public CorsFilter corsFilter() { 18 final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource(); 19 final CorsConfiguration corsConfiguration = new CorsConfiguration(); 20 corsConfiguration.setAllowCredentials(true); 21 corsConfiguration.addAllowedOrigin("*"); 22 corsConfiguration.addAllowedHeader("*"); 23 corsConfiguration.addAllowedMethod("*"); 24 urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration); 25 return new CorsFilter(urlBasedCorsConfigurationSource); 26 } 27 }
(2)添加配置类
1 import org.springframework.context.annotation.Configuration; 2 import org.springframework.web.servlet.config.annotation.CorsRegistry; 3 import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; 4 5 /** 6 * @Author: Hujh 7 * @Date: 2019/5/9 16:18 8 * @Description: 9 */ 10 @Configuration 11 public class WebMvcConfig extends WebMvcConfigurationSupport { 12 @Override 13 public void addCorsMappings(CorsRegistry registry) { 14 registry.addMapping("/**") 15 .allowedOrigins("*") 16 .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE") 17 .maxAge(3600) 18 .allowCredentials(true); 19 } 20 }
注:添加配置类方法取一即可.