当前位置:   article > 正文

Postman调用接口正常,前端页面调用报跨域_axios访问接口显示跨域,但是postman访问正常

axios访问接口显示跨域,但是postman访问正常
背景
(该接口为POST接口)配置了跨域,并自定义了一个拦截器,拦截器写了根据自定义注解放行接口的代码,结果前端报跨域,后端也没放行接口。
解决办法:
一、配置CorsFilter
  1. import org.springframework.context.annotation.Bean;
  2. import org.springframework.context.annotation.Configuration;
  3. import org.springframework.web.cors.CorsConfiguration;
  4. import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
  5. import org.springframework.web.filter.CorsFilter;
  6. import java.util.Arrays;
  7. @Configuration
  8. public class CorsConfig {
  9. @Bean
  10. public CorsFilter corsFilter(){
  11. UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
  12.    CorsConfiguration config = new CorsConfiguration();
  13.    // 允许发送Cookie
  14.    config.setAllowCredentials(true);
  15.    // 允许所有来源的请求
  16.    config.addAllowedOriginPattern("*");
  17.    // 允许所有的请求头字段
  18.    config.addAllowedHeader("*");
  19.    // 允许所有的请求方法(GET, POST, PUT, DELETE等)
  20.    config.addAllowedMethod("*");
  21.    // 对所有的路径都应用跨域配置
  22.    source.registerCorsConfiguration("/**", config);
  23.    // 创建并返回一个跨域过滤器实例
  24.    return new CorsFilter(source);
  25. }
  26. }
注:AllowCredentials设置为true后,无法和设置为*的AllowedOrigin一起使用,且AllowedOriginPatterns也无法直接设置为*,所以这里我使用的addAllowedOriginPattern("*")
二、配置放行接口
2.1、根据放行该接口(这样写的话跨域问题实际并没有解决,只是配置了放行的接口没问题)
2.2、由于POST接口,在实际调用前会有一个预调用(OPTIONS类型),该调用正常响应才会实际调接口,所以可以设置OPTIONS类型的接口放行也可以(这个没试过不清楚有没有效,推荐还是配置CorsFilter,配置完CorsFilter后可以不用配置addCorsMapping)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/425562
推荐阅读
相关标签
  

闽ICP备14008679号