如何解決springcloudgateway請求跨域問題

小編給大家分享一下如何解決springcloudgateway請求跨域問題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

做網(wǎng)站、網(wǎng)站制作服務(wù)團(tuán)隊(duì)是一支充滿著熱情的團(tuán)隊(duì),執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標(biāo)準(zhǔn)與要求,同時(shí)竭誠為客戶提供服務(wù)是我們的理念。創(chuàng)新互聯(lián)公司把每個(gè)網(wǎng)站當(dāng)做一個(gè)產(chǎn)品來開發(fā),精雕細(xì)琢,追求一名工匠心中的細(xì)致,我們更用心!

代碼如下

@Configurationpublic class CorsConfig implements GlobalFilter, Ordered {  private static final String ALL = "*";  private static final String MAX_AGE = "18000L";  @Bean  public RouteDefinitionLocator discoveryClientRouteDefinitionLocator(DiscoveryClient discoveryClient,                                    DiscoveryLocatorProperties properties) {    return new DiscoveryClientRouteDefinitionLocator(discoveryClient, properties);  }  @Bean  public ServerCodecConfigurer serverCodecConfigurer() {    return new DefaultServerCodecConfigurer();  }   //添加請求頭   @Bean  public WebFilter corsFilter() {    return (ServerWebExchange ctx, WebFilterChain chain) -> {      ServerHttpRequest request = ctx.getRequest();      if (!CorsUtils.isCorsRequest(request)) {        return chain.filter(ctx);      }      HttpHeaders requestHeaders = request.getHeaders();      ServerHttpResponse response = ctx.getResponse();      HttpMethod requestMethod = requestHeaders.getAccessControlRequestMethod();      HttpHeaders headers = response.getHeaders();      headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, requestHeaders.getOrigin());      headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, requestHeaders.getAccessControlRequestHeaders());      if (requestMethod != null) {        headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, requestMethod.name());      }      headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");      headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, ALL);      headers.add(HttpHeaders.ACCESS_CONTROL_MAX_AGE, MAX_AGE);      if (request.getMethod() == HttpMethod.OPTIONS) {        response.setStatusCode(HttpStatus.OK);        return Mono.empty();      }      return chain.filter(ctx);    };  }  //將請求頭中有多個(gè)值的去掉 這是該版本的一個(gè)bug  @Override  public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {    return chain.filter(exchange).then(Mono.defer(() -> {      exchange.getResponse().getHeaders().entrySet().stream()          .filter(kv -> (kv.getValue() != null && kv.getValue().size() > 1))          .filter(kv -> (kv.getKey().equals(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN)              || kv.getKey().equals(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS)))          .forEach(kv -> {            kv.setValue(new ArrayList<String>() {{              add(kv.getValue().get(0));            }});          });      return chain.filter(exchange);    }));  }  @Override  public int getOrder() {    // 指定此過濾器位于NettyWriteResponseFilter之后    // 即待處理完響應(yīng)體后接著處理響應(yīng)頭    return NettyWriteResponseFilter.WRITE_RESPONSE_FILTER_ORDER + 1;  }}

此處的spring-cloud-gateway的版本是2.1.3.RELEASE

以上是“如何解決springcloudgateway請求跨域問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站題目:如何解決springcloudgateway請求跨域問題
當(dāng)前網(wǎng)址:http://muchs.cn/article28/jioejp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)外貿(mào)建站、動(dòng)態(tài)網(wǎng)站商城網(wǎng)站、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)