[クラウドネイティブとマイクロサービス>SCGゲートウェイ第11章]SpringCloudGatewayはクロスドメインの問題を解決します

I.はじめに

これまでに、マイクロサービスゲートウェイシリーズの記事が公開されています。

  1. [クラウドネイティブとマイクロサービス>SCGゲートウェイパート1]ゲートウェイがある理由と本番環境でゲートウェイを選択する方法
  2. クラウドネイティブとマイクロサービス>SCGゲートウェイパート2]本番環境でのこれらのグレースケールリリース方法
  3. [クラウドネイティブとマイクロサービス>SCGゲートウェイパート3]SpringCloudGatewayとは何ですか?詳細なユースケース
  4. クラウドネイティブとマイクロサービス>SCGゲートウェイパート4]SpringCloudGatewayで11の組み込みPredicateFactoryを使用する方法
  5. [クラウドネイティブとマイクロサービス>SCGゲートウェイパート5]SpringCloudGatewayカスタムPredicateFactory
  6. [クラウドネイティブとマイクロサービス>SCGゲートウェイ第6章]SpringCloudGatewayに組み込まれた18のフィルター使用姿勢
  7. [クラウドネイティブとマイクロサービス>SCGゲートウェイ第7章]SpringCloud Gatewayは、組み込みのフィルターに基づいて、現在の制限、融合、および再試行を実装します
  8. [クラウドネイティブとマイクロサービス>SCGゲートウェイ第8章]SpringCloudGatewayフィルターとGlobalFilterをカスタマイズする3つの方法
  9. [クラウドネイティブとマイクロサービス>SCGゲートウェイ第9章]Nacosを統合したSpringCloudGatewayの詳細なケース
  10. [クラウドネイティブとマイクロサービス>SCGゲートウェイ第10章]アクチュエータとZipkinを統合したSpringCloudゲートウェイの詳細なケース

次の問題について話し合いました。

  1. なぜゲートウェイがあるのですか?ゲートウェイの役割は何ですか?
  2. ゲートウェイの分類?
  3. ゲートウェイテクノロジーの選択?
  4. ゲートウェイを使用するときに一般的に使用されるグレースケール公開方法は何ですか?
  5. Spring Cloud Gatewayとは何ですか?詳細なユースケース?
  6. SpringCloudGatewayに組み込まれた11種類のPredicateFactory
  7. PredicateFactoryをカスタマイズする方法は?
  8. SpringCloudGatewayに組み込まれている18の一般的に使用されるフィルター
  9. Spring Cloud Gatewayは、組み込みのフィルターに基づいて、現在の制限、融合、および再試行を実装します
  10. SpringCloudGatewayでFilterとGlobalFilterをカスタマイズする3つの方法
  11. SpringCloudGateway統合Nacosケース
  12. Spring Cloud Gatewayは、アクチュエータ、Zipkinケースを統合します

次に、この記事では、SpringCloudGatewayがCORSクロスドメインの問題をどのように解決するかについて説明します。

PS:SpringCloudのバージョン情報:

<properties>
    <spring-boot.version>2.4.2</spring-boot.version>
    <spring-cloud.version>2020.0.1</spring-cloud.version>
    <spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!--整合spring cloud-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!--整合spring cloud alibaba-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${spring-cloud-alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

2.クロスドメインの問題を解決する

[クラウドネイティブとマイクロサービス>SCGゲートウェイパート1]ゲートウェイが存在する理由と、実稼働環境でゲートウェイを選択する方法について、ゲートウェイがクロスドメインの問題を解決する方法について説明しました。ここでは、Springがどのように機能するかを見てみましょう。 Cloud Gatewayは、クロスドメインの問題を解決します。

公式記事を参照してください:https ://docs.spring.io/spring-cloud-gateway/docs/3.0.1/reference/html/#cors-configuration 。

spring.cloud.gateway.globalcors.corsConfigurationsCORSを処理するには;

spring:
  cloud:
    gateway:
      # 解决跨域问题
      globalcors:
        corsConfigurations:
          '[/**]': # 匹配所有请求
            # 设置允许的域名
            allowedOrigins:
              - "http://localhost:18003"
            # 允许所有头信息
            allowedHeaders: "*"
            # 设置允许携带cookie
            # 为true时allowedOrigins不允许为* 会报错
            allowCredentials: true
            allowedMethods: # 支持的方法
              - GET
              - POST
              - PUT
              - DELETE

corsConfigurationsプロパティはマップ構造に対応しています。
ここに画像の説明を挿入

その中[/**]で、例のMapのキーとして、すべてのリクエストが一致し、リクエストに関連するCORS構成情報がCorsConfigurationクラスに反映されていることを意味します。

ここに画像の説明を挿入

特別な注意:パラメータallowCredentialsがに設定されている場合、それは許可されていません。そうでない場合、エラーが報告されます!trueallowedOrigins*

おすすめ

転載: blog.csdn.net/Saintmm/article/details/125837159