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 {
@Bean
CorsFilter 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 {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOriginPatterns("*")
.allowedHeaders("*")
.allowedMethods("*")
.allowCredentials(true)
.maxAge(3600);
}
}