クラス CorsConfiguration

java.lang.ObjectSE
org.springframework.web.cors.CorsConfiguration

public class CorsConfiguration extends ObjectSE
CORS 構成のコンテナーと、特定のリクエストの実際のオリジン、HTTP メソッド、ヘッダーをチェックするメソッド。

デフォルトでは、新しく作成された CorsConfiguration はクロスオリジンリクエストを許可しないため、何を許可するかを明示的に構成する必要があります。applyPermitDefaultValues() を使用して初期化モデルを反転し、GET、HEAD、POST リクエストに対するすべてのクロスオリジンリクエストを許可するオープンデフォルトから始めます。

導入:
4.2
作成者:
Sebastien Deleuze, Rossen Stoyanchev, Juergen Hoeller, Sam Brannen, Ruslan Akhundov
関連事項:
  • フィールドの詳細

  • コンストラクターの詳細

    • CorsConfiguration

      public CorsConfiguration()
      デフォルトでは、どのオリジンでもクロスオリジンリクエストが許可されていない新しい CorsConfiguration インスタンスを作成します。
      関連事項:
    • CorsConfiguration

      public CorsConfiguration(CorsConfiguration other)
      指定された CorsConfiguration からすべての値をコピーして、新しい CorsConfiguration インスタンスを構築します。
  • メソッドの詳細

    • setAllowedOrigins

      public void setAllowedOrigins(@Nullable ListSE<StringSE> origins)
      クロスオリジンリクエストが許可されるオリジンのリスト。各値は次のいずれかです。
      • 特定のドメイン、例: "https://domain1.com"
      • 特定のドメインのカンマ区切りリスト (例: "https://a1.com,https://a2.com")。値がプロパティプレースホルダー (例: "${origin}") を通じて解決される場合に便利です。このようなプレースホルダーは外部で解決する必要があることに注意してください。
      • すべてのオリジンの CORS 定義の特別な値 "*" 

      一致したプリフライトリクエストと実際のリクエストの場合、Access-Control-Allow-Origin レスポンスヘッダーは、一致したドメイン値または "*" に設定されます。ただし、CORS 仕様では、allowCredentials が true に設定されている場合は "*" が許可されておらず、allowPrivateNetwork が true に設定されている場合は "*" が推奨されないことに注意してください。結果として、これらの組み合わせは拒否され、代わりに allowedOriginPatterns が使用されます。

      デフォルトではこれは設定されていないため、オリジンは許可されません。ただし、このクラスのインスタンスは、たとえば @CrossOrigin の場合は applyPermitDefaultValues() を介してさらに初期化されることがよくあります。

    • getAllowedOrigins

      @Nullable public ListSE<StringSE> getAllowedOrigins()
      許可するように構成されたオリジンを返します。許可しない場合は null を返します。
    • addAllowedOrigin

      public void addAllowedOrigin(@Nullable StringSE origin)
      一度に 1 つの原点を追加するための setAllowedOrigins(java.util.List<java.lang.String>) のバリアント。
    • setAllowedOriginPatterns

      public CorsConfiguration setAllowedOriginPatterns(@Nullable ListSE<StringSE> allowedOriginPatterns)
      ポートリストに加えて、ホスト名の任意の場所に "*" が付いた、より柔軟なオリジンパターンをサポートする setAllowedOrigins(java.util.List<java.lang.String>) の代替。例:
      • https://*.domain1.com-domain1.com で終わるドメイン
      • https://*.domain1.com:[8080、8081]- ポート 8080 またはポート 8081 で domain1.com で終わるドメイン
      • https://*.domain1.com:[*]- デフォルトポートを含む任意のポートで domain1.com で終わるドメイン
      • カンマで区切られたパターンのリスト (例: "https://*.a1.com,https://*.a2.com")。値がプロパティプレースホルダー (例: "${origin}") を通じて解決される場合に便利です。このようなプレースホルダーは外部で解決する必要があることに注意してください。

      "*" のみをサポートし、allowCredentials または allowPrivateNetwork では使用できない allowedOrigins とは対照的に、allowedOriginPattern が一致すると、Access-Control-Allow-Origin レスポンスヘッダーは "*" やパターンではなく、一致したオリジンに設定されます。allowedOriginPatterns は、true に設定された setAllowCredentials(java.lang.Boolean) および setAllowPrivateNetwork(java.lang.Boolean) と組み合わせて使用できます。

      デフォルトでは、これは設定されていません。

      導入:
      5.3
    • getAllowedOriginPatterns

      @Nullable public ListSE<StringSE> getAllowedOriginPatterns()
      許可するように構成されたオリジンパターンを返します。ない場合は null を返します。
      導入:
      5.3
    • addAllowedOriginPattern

      public void addAllowedOriginPattern(@Nullable StringSE originPattern)
      一度に 1 つの原点を追加するための setAllowedOriginPatterns(java.util.List<java.lang.String>) のバリアント。
      導入:
      5.3
    • setAllowedMethods

      public void setAllowedMethods(@Nullable ListSE<StringSE> allowedMethods)
      許可する HTTP メソッド (例: "GET""POST""PUT" など) を設定します。特殊な値 "*" はすべてのメソッドを許可します。

      Access-Control-Allow-Methods レスポンスヘッダーは、構成されたメソッドまたは "*" のいずれかに設定されます。ただし、allowCredentials が true に設定されている場合、CORS 仕様では "*" が許可されていないことに注意してください。その組み合わせは、CORS プリフライトリクエストで指定されたメソッドをコピーすることによって処理されます。

      設定しない場合、"GET" と "HEAD" のみが許可されます。

      デフォルトでは、これは設定されていません。

      注意 : CORS チェックは、クライアントから発信されたアドレスを反映するために、存在する場合、"Forwarded" (RFC 7239)、"X-Forwarded-Host"、"X-Forwarded-Port"、"X-Forwarded-Proto" ヘッダーの値を使用します。ForwardedHeaderFilter を使用して、抽出して使用するか、このようなヘッダーを破棄するかを中央から選択することを検討してください。このフィルターの詳細については、Spring Framework リファレンスを参照してください。

    • getAllowedMethods

      @Nullable public ListSE<StringSE> getAllowedMethods()
      許可された HTTP メソッド、または null を返します。この場合、"GET" および "HEAD" のみが許可されます。
      関連事項:
    • addAllowedMethod

      public void addAllowedMethod(HttpMethod method)
      許可されたメソッドを一度に 1 つずつ追加するための setAllowedMethods(java.util.List<java.lang.String>) のバリアント。
    • addAllowedMethod

      public void addAllowedMethod(StringSE method)
      許可されたメソッドを一度に 1 つずつ追加するための setAllowedMethods(java.util.List<java.lang.String>) のバリアント。
    • setAllowedHeaders

      public void setAllowedHeaders(@Nullable ListSE<StringSE> allowedHeaders)
      実際のリクエスト中に使用できるようにプリフライトリクエストでリストできるヘッダーのリストを設定します。特別な値 "*" を使用すると、実際のリクエストで任意のヘッダーを送信できます。

      Access-Control-Allow-Headers レスポンスヘッダーは、構成されたヘッダーのリストまたは "*" のいずれかに設定されます。ただし、allowCredentials が true に設定されている場合、CORS 仕様では "*" が許可されていないことに注意してください。その組み合わせは、CORS プリフライトリクエストで指定されたヘッダーをコピーすることによって処理されます。

      ヘッダー名が Cache-ControlContent-LanguageExpiresLast-Modified または Pragma のいずれかである場合、ヘッダー名をリストする必要はありません。

      デフォルトでは、これは設定されていません。

    • getAllowedHeaders

      @Nullable public ListSE<StringSE> getAllowedHeaders()
      許可された実際のリクエストヘッダーを返します。ない場合は null を返します。
      関連事項:
    • addAllowedHeader

      public void addAllowedHeader(StringSE allowedHeader)
      許可されたヘッダーを一度に 1 つずつ追加するための setAllowedHeaders(List) のバリアント。
    • setExposedHeaders

      public void setExposedHeaders(@Nullable ListSE<StringSE> exposedHeaders)
      実際のレスポンスに含まれる可能性があり、クライアントに公開できるレスポンスヘッダーのリストを設定します。特別な値 "*" を使用すると、すべてのヘッダーを公開できます。

      Access-Control-Expose-Headers レスポンスヘッダーは、構成されたヘッダーのリストまたは "*" のいずれかに設定されます。CORS 仕様では、Access-Control-Allow-Credentials が true に設定されている場合に "*" を許可しませんが、ほとんどのブラウザーは "*" をサポートしており、CORS 処理中にレスポンスヘッダーがすべて利用できるわけではないため、結果として、"*" は、 `allowCredentials` プロパティ。

      ヘッダー名が Cache-ControlContent-LanguageExpiresLast-Modified または Pragma のいずれかである場合、ヘッダー名をリストする必要はありません。

      デフォルトでは、これは設定されていません。

    • getExposedHeaders

      @Nullable public ListSE<StringSE> getExposedHeaders()
      公開する構成済みのレスポンスヘッダーを返します。存在しない場合は null を返します。
      関連事項:
    • addExposedHeader

      public void addExposedHeader(StringSE exposedHeader)
      一度に 1 つの公開ヘッダーを追加するための setExposedHeaders(java.util.List<java.lang.String>) のバリアント。
    • setAllowCredentials

      public void setAllowCredentials(@Nullable BooleanSE allowCredentials)
      ユーザー資格情報がサポートされているかどうか。

      このプロパティの設定は、originsoriginPatternsallowedMethods および allowedHeaders の処理方法に影響します。詳細については、関連する API ドキュメントを参照してください。

      注意 : このオプションは、構成されたドメインとの高レベルの信頼を確立し、Cookie や CSRF トークンなどのユーザー固有の機密情報を公開することにより、Web アプリケーションの表面攻撃を増やすことに注意してください。

      デフォルトでは、これは設定されていません(つまり、ユーザー資格情報はサポートされていません)。

    • getAllowCredentials

      @Nullable public BooleanSE getAllowCredentials()
      構成済みの allowCredentials フラグを返します。ない場合は null を返します。
      関連事項:
    • setAllowPrivateNetwork

      public void setAllowPrivateNetwork(@Nullable BooleanSE allowPrivateNetwork)
      プライベートネットワークアクセスがデフォルトでそのようなアクセスを制限するユーザーエージェントに対してサポートされているかどうか。

      プライベートネットワークリクエストは、ターゲットサーバーの IP アドレスが、リクエストの開始元の IP アドレスよりもプライベートであるリクエストです。例: パブリック Web サイト (https://example.com) からプライベート Web サイト (https://router.local),) へのリクエスト、またはプライベート Web サイトからローカルホストへのリクエスト)。

      このプロパティの設定は、origins および originPatterns の処理方法に影響します。詳細については、関連する API ドキュメントを参照してください。

      デフォルトでは、これは設定されていません (つまり、プライベートネットワークアクセスはサポートされていません)。

      導入:
      5.3.32
      関連事項:
    • getAllowPrivateNetwork

      @Nullable public BooleanSE getAllowPrivateNetwork()
      構成済みの allowPrivateNetwork フラグを返します。ない場合は null を返します。
      導入:
      5.3.32
      関連事項:
    • setMaxAge

      public void setMaxAge(DurationSE maxAge)
      期間として、プリフライトリクエストからのレスポンスをクライアントがキャッシュできる期間を設定します。
      導入:
      5.2
      関連事項:
    • setMaxAge

      public void setMaxAge(@Nullable LongSE maxAge)
      プリフライトリクエストからのレスポンスをクライアントがキャッシュできる期間を秒単位で構成します。

      デフォルトでは、これは設定されていません。

    • getMaxAge

      @Nullable public LongSE getMaxAge()
      構成された maxAge 値を返します。ない場合は null 値を返します。
      関連事項:
    • applyPermitDefaultValues

      public CorsConfiguration applyPermitDefaultValues()
      デフォルトでは、CorsConfiguration はクロスオリジンリクエストを許可しないため、明示的に設定する必要があります。このメソッドを使用して、GET、HEAD、POST のすべてのクロスオリジンリクエストを許可するが、すでに設定されている値をオーバーライドしないデフォルトに切り替えます。

      設定されていない値には、次のデフォルトが適用されます。

      • CORS 仕様で定義されている特別な値 "*" を持つすべてのオリジンを許可します。これは、originsoriginPatterns もまだ設定されていない場合にのみ設定されます。
      • 「単純な」メソッド GETHEADPOST を許可します。
      • すべてのヘッダーを許可します。
      • 最大経過時間を 1800 秒(30 分)に設定します。
    • validateAllowCredentials

      public void validateAllowCredentials()
      allowCredentials が true の場合、"Access-Control-Allow-Origin" を "*" に設定できないため、allowedOrigins に特別な値 "*" が含まれていないことを検証します。
      例外:
      IllegalArgumentExceptionSE - 検証が失敗した場合
      導入:
      5.3
    • validateAllowPrivateNetwork

      public void validateAllowPrivateNetwork()
      allowPrivateNetwork が true である場合、これは安全ではないため、allowedOrigins に特別な値 "*" が含まれていないことを検証します。
      例外:
      IllegalArgumentExceptionSE - 検証が失敗した場合
      導入:
      5.3.32
    • combine

      提供された CorsConfiguration の null 以外のプロパティをこれと組み合わせます。

      allowCredentials や maxAge などの単一の値を組み合わせる場合、this プロパティは、null でない other プロパティがある場合はそれによってオーバーライドされます。

      allowedOriginsallowedMethodsallowedHeaders や exposedHeaders のようなリストの組み合わせは、相加的な方法で行われます。例: ["GET", "POST"] を ["PATCH"] と組み合わせると、["GET", "POST", "PATCH"] になります。ただし、["GET", "POST"] を ["*"] と組み合わせると、["*"] になります。applyPermitDefaultValues() によって設定されたデフォルトの許可値は、明示的に定義された値によって上書きされることにも注意してください。

      戻り値:
      結合された CorsConfiguration、または提供された構成が null の場合は this 構成
    • checkOrigin

      @Nullable public StringSE checkOrigin(@Nullable StringSE origin)
      構成された許可された発信元に対してリクエストの発信元を確認します。
      パラメーター:
      origin - チェックする原点
      戻り値:
      レスポンスに使用する起点、またはリクエストの起点が許可されていないことを意味する null 
    • checkHttpMethod

      @Nullable public ListSE<HttpMethod> checkHttpMethod(@Nullable HttpMethod requestMethod)
      HTTP リクエストメソッド(またはプリフライトリクエストの Access-Control-Request-Method ヘッダーのメソッド)を、構成された許可されたメソッドと照合します。
      パラメーター:
      requestMethod - チェックする HTTP リクエストメソッド
      戻り値:
      プリフライトリクエストのレスポンスでリストする HTTP メソッドのリスト、または指定された requestMethod が許可されていない場合は null 
    • checkHeaders

      @Nullable public ListSE<StringSE> checkHeaders(@Nullable ListSE<StringSE> requestHeaders)
      提供されたリクエストヘッダー(またはプリフライトリクエストの Access-Control-Request-Headers にリストされているヘッダー)を、構成された許可されたヘッダーと照合します。
      パラメーター:
      requestHeaders - チェックするリクエストヘッダー
      戻り値:
      プリフライトリクエストのレスポンスにリストする許可されたヘッダーのリスト、または提供されたリクエストヘッダーのいずれも許可されていない場合は null