最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring cloud gateway請求跨域問題解決方案

 更新時間:2020年01月15日 10:25:40   作者:炫舞風(fēng)中  
這篇文章主要介紹了spring cloud gateway請求跨域問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

這篇文章主要介紹了spring cloud gateway請求跨域問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

代碼如下

@Configuration
public 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);
    };
  }
  //將請求頭中有多個值的去掉 這是該版本的一個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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用java基于pushlet和bootstrap實現(xiàn)的簡單聊天室

    使用java基于pushlet和bootstrap實現(xiàn)的簡單聊天室

    這篇文章主要介紹了使用java基于pushlet和bootstrap實現(xiàn)的簡單聊天室的相關(guān)資料,需要的朋友可以參考下
    2015-03-03
  • Java圖書管理系統(tǒng)課程設(shè)計

    Java圖書管理系統(tǒng)課程設(shè)計

    這篇文章主要為大家詳細介紹了Java圖書管理系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Spring自動裝配bean的方式總結(jié)

    Spring自動裝配bean的方式總結(jié)

    這篇主要介紹了Spring自動裝配Bean的方式總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2024-01-01
  • ?基于Java解決華為機試之字符串合并處理實操

    ?基于Java解決華為機試之字符串合并處理實操

    這篇文章主要介紹了基于Java解決華為機試之字符串合并處理,文章以實操展開主題內(nèi)容,具有一的參考價值,需要的小伙伴可以參考一下,希望對工作中的你有所幫助
    2022-02-02
  • JAVA使用JDBC技術(shù)操作SqlServer數(shù)據(jù)庫實例代碼

    JAVA使用JDBC技術(shù)操作SqlServer數(shù)據(jù)庫實例代碼

    本篇文章主要介紹了JAVA使用JDBC技術(shù)操作SqlServer數(shù)據(jù)庫實例代碼,具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01
  • Jasypt對SpringBoot配置文件加密

    Jasypt對SpringBoot配置文件加密

    數(shù)據(jù)庫密碼直接明文寫在配置中,對安全來說,是一個很大的挑戰(zhàn)。一旦密碼泄漏,將會帶來很大的安全隱患。尤其在一些企業(yè)對安全性要求很高,因此我們就考慮如何對密碼進行加密。本文著重介紹Jasypt對SpringBoot配置文件加密。
    2021-05-05
  • java webApp異步上傳圖片實現(xiàn)代碼

    java webApp異步上傳圖片實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了java webApp異步上傳圖片實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 解決JD-GUI for mac big sur打不開問題

    解決JD-GUI for mac big sur打不開問題

    這篇文章主要介紹了解決JD-GUI for mac big sur打不開問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java中的CountDownLatch原理深入解析

    Java中的CountDownLatch原理深入解析

    這篇文章主要介紹了Java中的CountDownLatch原理深入解析,CountDownLatch是多線程控制的一種同步工具類,它被稱為門閥、 計數(shù)器或者閉鎖,這個工具經(jīng)常用來用來協(xié)調(diào)多個線程之間的同步,或者說起到線程之間的通信,需要的朋友可以參考下
    2024-01-01
  • Springboot使用Logback實現(xiàn)日志配置與異常記錄

    Springboot使用Logback實現(xiàn)日志配置與異常記錄

    默認情況下,SpringBoot內(nèi)部使用logback作為系統(tǒng)日志實現(xiàn)的框架,將日志輸出到控制臺,不會寫到日志文件。本篇文章主要講解下如何自定義logabck.xml以及對logback文件中配置做一個詳解,需要的可以參考一下
    2022-11-11

最新評論

额济纳旗| 收藏| 博野县| 长春市| 宁强县| 准格尔旗| 镇坪县| 枣强县| 桃源县| 呼伦贝尔市| 奉新县| 富宁县| 南澳县| 龙海市| 东乡县| 嘉峪关市| 马公市| 新余市| 虞城县| 白城市| 永济市| 毕节市| 麻江县| 东阿县| 马公市| 克拉玛依市| 五常市| 炉霍县| 宿州市| 娱乐| 衡水市| 广昌县| 井研县| 金溪县| 双辽市| 宁武县| 石渠县| 巴楚县| 富裕县| 淮安市| 张家港市|