Postman调用接口正常,前端页面调用报跨域

背景
(该接口为POST接口)配置了跨域,并自定义了一个拦截器,拦截器写了根据自定义注解放行接口的代码,结果前端报跨域,后端也没放行接口。
解决办法:
一、配置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;

import java.util.Arrays;

@Configuration
public class CorsConfig {

    @Bean
    public CorsFilter corsFilter(){

    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
      CorsConfiguration config = new CorsConfiguration();
      // 允许发送Cookie
      config.setAllowCredentials(true);
      // 允许所有来源的请求
      config.addAllowedOriginPattern("*");
      // 允许所有的请求头字段
      config.addAllowedHeader("*");
      // 允许所有的请求方法(GET, POST, PUT, DELETE等)
      config.addAllowedMethod("*");
      // 对所有的路径都应用跨域配置
      source.registerCorsConfiguration("/**", config);
      // 创建并返回一个跨域过滤器实例
      return new CorsFilter(source);
    }

}
注:AllowCredentials设置为true后,无法和设置为*的AllowedOrigin一起使用,且AllowedOriginPatterns也无法直接设置为*,所以这里我使用的addAllowedOriginPattern("*")
二、配置放行接口
2.1、根据放行该接口(这样写的话跨域问题实际并没有解决,只是配置了放行的接口没问题)
2.2、由于POST接口,在实际调用前会有一个预调用(OPTIONS类型),该调用正常响应才会实际调接口,所以可以设置OPTIONS类型的接口放行也可以(这个没试过不清楚有没有效,推荐还是配置CorsFilter,配置完CorsFilter后可以不用配置addCorsMapping)
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值