记录学习 - Spring Boot中如何解决跨域问题?

文章讲述了在前后端分离的项目中,如何处理跨域问题。通过在SpringBoot应用中使用CORS配置,特别是通过实现WebMvcConfigurer接口或者使用CorsFilter,允许特定的跨域请求。同时,提到了在权限拦截器和跨域处理顺序上的考虑,以及在处理用户登录状态时可能出现的问题。
摘要由CSDN通过智能技术生成

跨域可以在前端通过JSONP来解决,但是JSONP只可以发送GET请求,无法发送其他类型的请 求,在RESTful风格的应用中,就显得非常鸡肋,因此推荐在后端通过(CORS,Crossorigin resource sharing)来解决跨域问题。这种解决方案并非Spring Boot特有的,在传统 的SSM框架中,就可以通过CORS来解决跨域问题,只不过之前我们是在XML文件中配置 CORS,现在可以通过实现WebMvcConfigurer接口然后重addCorsMappings方法解决跨 域问题。

@Configuration
public class CorsConfig implements WebMvcConfigurer {

  @Override
  public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**").allowedOrigins("*").allowCredentials(true).allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS").maxAge(3600);
  }
}

项目中前后端分离部署,所以需要解决跨域的问题。

我们使用cookie存放用户登录的信息,在spring拦截器进行权限控制,当权限不符合时,直接 返回给用户固定的json结果。

当用户登录以后,正常使用;当用户退出登录状态时或者token过期时,由于拦截器和跨域的 顺序有问题,出现了跨域的现象。

我们知道一个http请求,先走filter,到达servlet后才进行拦截器的处理,如果我们把cors放在filter里,就可以优先于权限拦截器执行。

@Configuration
public class CorsConfig {
    @Bean
    public CorsFilter corsFilter() {
      CorsConfiguration corsConfiguration = new CorsConfiguration();
      corsConfiguration.addAllowedOrigin("*");
      corsConfiguration.addAllowedHeader("*");
      corsConfiguration.addAllowedMethod("*");
      corsConfiguration.setAllowCredentials(true);
      UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
      urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
      return new CorsFilter(urlBasedCorsConfigurationSource);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值