成都网站建设设计

将想法与焦点和您一起共享

springcloud如何解决前端跨域问题

这篇文章主要为大家展示了“spring cloud如何解决前端跨域问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“spring cloud如何解决前端跨域问题”这篇文章吧。

广安ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

解决方案一:在Controller上添加@CrossOrigin注解

使用方式如下:

@CrossOrigin // 注解方式 
@RestController 
public class HandlerScanController { 
   
   
  @CrossOrigin(allowCredentials="true", allowedHeaders="*", methods={RequestMethod.GET, 
      RequestMethod.POST, RequestMethod.DELETE, RequestMethod.OPTIONS, 
      RequestMethod.HEAD, RequestMethod.PUT, RequestMethod.PATCH}, origins="*") 
  @PostMapping("/confirm") 
  public Response handler(@RequestBody Request json){ 
     
    return null; 
  } 
}

解决方案二:全局配置

代码如下:

@Configuration 
  public class MyConfiguration { 
 
    @Bean 
    public WebMvcConfigurer corsConfigurer() { 
      return new WebMvcConfigurerAdapter() { 
        @Override 
        public void addCorsMappings(CorsRegistry registry) { 
          registry.addMapping("/**") 
          .allowCredentials(true) 
          .allowedMethods("GET"); 
        } 
      }; 
    } 
  }

解决方案三:结合Filter使用

在spring boot的主类中,增加一个CorsFilter 

/** 
   * 
   * attention:简单跨域就是GET,HEAD和POST请求,但是POST请求的"Content-Type"只能是application/x-www-form-urlencoded, multipart/form-data 或 text/plain 
   * 反之,就是非简单跨域,此跨域有一个预检机制,说直白点,就是会发两次请求,一次OPTIONS请求,一次真正的请求 
   */ 
  @Bean 
  public CorsFilter corsFilter() { 
    final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); 
    final CorsConfiguration config = new CorsConfiguration(); 
    config.setAllowCredentials(true); // 允许cookies跨域 
    config.addAllowedOrigin("*");// #允许向该服务器提交请求的URI,*表示全部允许,在SpringMVC中,如果设成*,会自动转成当前请求头中的Origin 
    config.addAllowedHeader("*");// #允许访问的头信息,*表示全部 
    config.setMaxAge(18000L);// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了 
    config.addAllowedMethod("OPTIONS");// 允许提交请求的方法,*表示全部允许 
    config.addAllowedMethod("HEAD"); 
    config.addAllowedMethod("GET");// 允许Get的请求方法 
    config.addAllowedMethod("PUT"); 
    config.addAllowedMethod("POST"); 
    config.addAllowedMethod("DELETE"); 
    config.addAllowedMethod("PATCH"); 
    source.registerCorsConfiguration("/**", config); 
    return new CorsFilter(source); 
  }

当然,如果微服务多的话,需要在每个服务的主类上都加上这么段代码,这违反了DRY原则,更好的做法是在zuul的网关层解决跨域问题,一劳永逸。

以上是“spring cloud如何解决前端跨域问题”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


分享名称:springcloud如何解决前端跨域问题
文章地址:http://chengdu.cdxwcx.cn/article/pijspc.html