跨域的定义:
http://www.sgl520.top:8080
协议 + 域名/ip + 端口
这三者完全相同视为资源域相同,如果不同则就是跨域了
第一种方法:使用注解@CrossOrigin
使用在方法上面,则只对这一个方法生效
@RequestMapping("/cors_test")
@GetMapping
@CrossOrigin("http://localhost:8024")
public String corsTest(){
return "hello cors";
}
可以使用在controller上面,则对这个controller里面的所有方法生效
/**
* @Description:
* @Author: sgl
* @Date: 2020/12/8 0008 下午 19:18
*/
/**
* maxAge:探测请求最大时间范围,180秒内请求成功一次,不用再次探测
* get请求不用探测
**/
@RestController
@RequestMapping("cors")
@CrossOrigin(value = "http://localhost:8024",maxAge = 180)
public class HelloCors {
@RequestMapping("/cors_test")
@GetMapping
public String corsTest(){
return "hello cors";
}
}
第二种方法:重写springmvc 的配置类 WebMvcConfigurer 的 addCorsMappings 方法
第一种方法不适合项目全局配置,第二种是可以满足全局配置的
/**
* @Description:
* 写一个配置类实现spring mvc的WebMvcConfigurer 重写 addCorsMappings方法
* 然后将配置类用注解 @Configuration 注入spring 容器
* @Author: sgl
* @Date: 2021/1/12 0012 下午 14:01
*/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry){
registry.addMapping("/**")
.allowedMethods("*")
.allowedHeaders("*")
.allowedOrigins("http://localhost:8024")
.maxAge(180);
}
}
第三种方法:注入CorsFilter的方式
/**
* @Description:
* 将cors过滤器 CorsFilter 对象注入到spring容器中
* @Author: sgl
* @Date: 2021/1/12 0012 下午 14:21
*/
@Configuration
public class CorsConfig {
@Bean
CorsFilter corsFilter(){
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", buildConfig());
return new CorsFilter(source);
}
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOrigin("http://localhost:8024");
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
corsConfiguration.setAllowCredentials(true);
return corsConfiguration;
}
}
以上就是spring项目三种常见的解决跨域访问问题的解决方式。
demo源码地址:https://github.com/Hak-L/cors.git