SpringMVC跨域问题

一个基本的前后端分离的项目,前端使用Vue,后端使用SprinBoot
在这里插入图片描述
原因是请求里面请求头不包含access-control-allow-origin,这是浏览器的保护机制,不是请求没到后端
这个原因是同源策略,也就是要求协议,域名,端口都相同的才是同源,这里的端口不同

  • Vue: http://localhost:8080
  • SpringBoot:http://localhost:8081/list

跨域资源共享的后端解决方法

CORS :Cross Origin Resource Sharding

1、在目标方法上添加@CrossOrigin 注解

@GetMapping (" /1ist")
Crossorigin
pub7ic List<string> list({i
List<string> list = Arrays.asList("Java" , "C++", "Go");return list;
}

2.添加CORS过滤器
如果方法很多,一个个方法上添加很麻烦,可以考虑实现一个CORS过滤器

@configuration
public class corsConfig {
@Bean
pub1ic corsFilter corsFi7ter({
    corsConfiguration corsConfiguration = new CorsConfiguration();
    corsConfiguration.addA77owedorigin("*");
    corsconfiguration.addA1lowedHeader("*");
    corsConfiguration.addA17owedMethod("*");
    ur1BasedcorsconfigurationSource source = new UrlBasedcorsconfigurationsource();
   source.registerCorsConfiguration(" /**",corsconfiguration) ;
   return new CorsFi7ter(source);
}
}

3.实现WebMvcConfigurer 接口,重写addCorsMappings方法

@Configuration
public class CorsConfiguration implements WebMvcConfigurer {
  @Override
public void addCorsMappings(CorsRegistry registry) {
  registry.addMapping( pathPattern: "/**")
          .allowedOriginPatterns("*")
          .allowedMethods("GET", "POST","PUT""DELETE","HEAD""OPTIONS")
          .allowCredentials(true)
          .maxAge(3600)
          .allowedHeaders( "*");
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值