クラス CorsConfiguration
デフォルトでは、新しく作成された CorsConfiguration はクロスオリジンリクエストを許可しないため、何を許可するかを明示的に構成する必要があります。applyPermitDefaultValues() を使用して初期化モデルを反転し、GET、HEAD、POST リクエストに対するすべてのクロスオリジンリクエストを許可するオープンデフォルトから始めます。
- 導入:
- 4.2
- 作成者:
- Sebastien Deleuze, Rossen Stoyanchev, Juergen Hoeller, Sam Brannen, Ruslan Akhundov
- 関連事項:
フィールドのサマリー
フィールドコンストラクターの概要
コンストラクターコンストラクター説明デフォルトでは、どのオリジンでもクロスオリジンリクエストが許可されていない新しいCorsConfigurationインスタンスを作成します。指定されたCorsConfigurationからすべての値をコピーして、新しいCorsConfigurationインスタンスを構築します。メソッドのサマリー
修飾子と型メソッド説明voidaddAllowedHeader(StringSE allowedHeader) 許可されたヘッダーを一度に 1 つずつ追加するためのsetAllowedHeaders(List)のバリアント。voidaddAllowedMethod(StringSE method) 許可されたメソッドを一度に 1 つずつ追加するためのsetAllowedMethods(java.util.List<java.lang.String>)のバリアント。voidaddAllowedMethod(HttpMethod method) 許可されたメソッドを一度に 1 つずつ追加するためのsetAllowedMethods(java.util.List<java.lang.String>)のバリアント。voidaddAllowedOrigin(StringSE origin) 一度に 1 つの原点を追加するためのsetAllowedOrigins(java.util.List<java.lang.String>)のバリアント。voidaddAllowedOriginPattern(StringSE originPattern) 一度に 1 つの原点を追加するためのsetAllowedOriginPatterns(java.util.List<java.lang.String>)のバリアント。voidaddExposedHeader(StringSE exposedHeader) 一度に 1 つの公開ヘッダーを追加するためのsetExposedHeaders(java.util.List<java.lang.String>)のバリアント。デフォルトでは、CorsConfigurationはクロスオリジンリクエストを許可しないため、明示的に設定する必要があります。checkHeaders(ListSE<StringSE> requestHeaders) 提供されたリクエストヘッダー(またはプリフライトリクエストのAccess-Control-Request-Headersにリストされているヘッダー)を、構成された許可されたヘッダーと照合します。checkHttpMethod(HttpMethod requestMethod) HTTP リクエストメソッド(またはプリフライトリクエストのAccess-Control-Request-Methodヘッダーのメソッド)を、構成された許可されたメソッドと照合します。checkOrigin(StringSE origin) 構成された許可された発信元に対してリクエストの発信元を確認します。combine(CorsConfiguration other) 提供されたCorsConfigurationの null 以外のプロパティをこれと組み合わせます。構成済みのallowCredentialsフラグを返します。ない場合はnullを返します。許可された実際のリクエストヘッダーを返します。ない場合はnullを返します。許可された HTTP メソッド、またはnullを返します。この場合、"GET"および"HEAD"のみが許可されます。許可するように構成されたオリジンパターンを返します。ない場合はnullを返します。許可するように構成されたオリジンを返します。許可しない場合はnullを返します。構成済みのallowPrivateNetworkフラグを返します。ない場合はnullを返します。公開する構成済みのレスポンスヘッダーを返します。存在しない場合はnullを返します。構成されたmaxAge値を返します。ない場合はnull値を返します。voidsetAllowCredentials(BooleanSE allowCredentials) ユーザー資格情報がサポートされているかどうか。voidsetAllowedHeaders(ListSE<StringSE> allowedHeaders) プリフライトリクエストが実際のリクエスト中に使用できるようにリストできるヘッダーのリストを設定します。voidsetAllowedMethods(ListSE<StringSE> allowedMethods) 許可する HTTP メソッド (例:"GET"、"POST"、"PUT"など) を設定します。setAllowedOriginPatterns(ListSE<StringSE> allowedOriginPatterns) ポートリストに加えて、ホスト名の任意の場所に "*" が付いた、より柔軟なオリジンパターンをサポートするsetAllowedOrigins(java.util.List<java.lang.String>)の代替。voidsetAllowedOrigins(ListSE<StringSE> origins) クロスオリジンリクエストが許可されるオリジンのリスト。各値は次のいずれかになります: 特定のドメイン (例:"https://domain1.com") 特定のドメインのカンマ区切りリスト (例:"https://a1.com,https://a2.com")。値がプロパティプレースホルダー (例:"${origin}") を通じて解決される場合に便利です。このようなプレースホルダーは外部で解決する必要があることに注意してください。voidsetAllowPrivateNetwork(BooleanSE allowPrivateNetwork) プライベートネットワークアクセスがデフォルトでそのようなアクセスを制限するユーザーエージェントに対してサポートされているかどうか。voidsetExposedHeaders(ListSE<StringSE> exposedHeaders) 実際のレスポンスに含まれる可能性があり、クライアントに公開できるレスポンスヘッダーのリストを設定します。voidプリフライトリクエストからのレスポンスをクライアントがキャッシュできる期間を秒単位で構成します。voidsetMaxAge(DurationSE maxAge) 期間として、プリフライトリクエストからのレスポンスをクライアントがキャッシュできる期間を設定します。voidallowCredentialsがtrueの場合、"Access-Control-Allow-Origin" を"*"に設定できないため、allowedOriginsに特別な値"*"が含まれていないことを検証します。void
フィールドの詳細
ALL
すべてのオリジン、メソッド、ヘッダーを表すワイルドカード。- 関連事項:
コンストラクターの詳細
CorsConfiguration
public CorsConfiguration()デフォルトでは、どのオリジンでもクロスオリジンリクエストが許可されていない新しいCorsConfigurationインスタンスを作成します。CorsConfiguration
指定されたCorsConfigurationからすべての値をコピーして、新しいCorsConfigurationインスタンスを構築します。
メソッドの詳細
setAllowedOrigins
クロスオリジンリクエストが許可されるオリジンのリスト。各値は次のいずれかです。- 特定のドメイン、例:
"https://domain1.com" - 特定のドメインのカンマ区切りリスト (例:
"https://a1.com,https://a2.com")。値がプロパティプレースホルダー (例:"${origin}") を通じて解決される場合に便利です。このようなプレースホルダーは外部で解決する必要があることに注意してください。 - すべてのオリジンの CORS 定義の特別な値
"*"
一致したプリフライトリクエストと実際のリクエストの場合、
Access-Control-Allow-Originレスポンスヘッダーは、一致したドメイン値または"*"に設定されます。ただし、CORS 仕様では、allowCredentialsがtrueに設定されている場合は"*"が許可されておらず、allowPrivateNetworkがtrueに設定されている場合は"*"が推奨されないことに注意してください。結果として、これらの組み合わせは拒否され、代わりにallowedOriginPatternsが使用されます。デフォルトではこれは設定されていないため、オリジンは許可されません。ただし、このクラスのインスタンスは、たとえば
@CrossOriginの場合はapplyPermitDefaultValues()を介してさらに初期化されることがよくあります。- 特定のドメイン、例:
getAllowedOrigins
許可するように構成されたオリジンを返します。許可しない場合はnullを返します。addAllowedOrigin
一度に 1 つの原点を追加するためのsetAllowedOrigins(java.util.List<java.lang.String>)のバリアント。setAllowedOriginPatterns
ポートリストに加えて、ホスト名の任意の場所に "*" が付いた、より柔軟なオリジンパターンをサポートする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
許可するように構成されたオリジンパターンを返します。ない場合はnullを返します。- 導入:
- 5.3
addAllowedOriginPattern
一度に 1 つの原点を追加するためのsetAllowedOriginPatterns(java.util.List<java.lang.String>)のバリアント。- 導入:
- 5.3
setAllowedMethods
許可する HTTP メソッド (例:"GET"、"POST"、"PUT"など) を設定します。特殊な値"*"はすべてのメソッドを許可します。Access-Control-Allow-Methodsレスポンスヘッダーは、構成されたメソッドまたは"*"のいずれかに設定されます。ただし、allowCredentialsがtrueに設定されている場合、CORS 仕様では"*"が許可されていないことに注意してください。その組み合わせは、CORS プリフライトリクエストで指定されたメソッドをコピーすることによって処理されます。設定しない場合、
"GET"と"HEAD"のみが許可されます。デフォルトでは、これは設定されていません。
getAllowedMethods
許可された HTTP メソッド、またはnullを返します。この場合、"GET"および"HEAD"のみが許可されます。addAllowedMethod
許可されたメソッドを一度に 1 つずつ追加するためのsetAllowedMethods(java.util.List<java.lang.String>)のバリアント。addAllowedMethod
許可されたメソッドを一度に 1 つずつ追加するためのsetAllowedMethods(java.util.List<java.lang.String>)のバリアント。setAllowedHeaders
実際のリクエスト中に使用できるようにプリフライトリクエストでリストできるヘッダーのリストを設定します。特別な値"*"を使用すると、実際のリクエストで任意のヘッダーを送信できます。Access-Control-Allow-Headersレスポンスヘッダーは、構成されたヘッダーのリストまたは"*"のいずれかに設定されます。ただし、allowCredentialsがtrueに設定されている場合、CORS 仕様では"*"が許可されていないことに注意してください。その組み合わせは、CORS プリフライトリクエストで指定されたヘッダーをコピーすることによって処理されます。ヘッダー名が
Cache-Control、Content-Language、Expires、Last-ModifiedまたはPragmaのいずれかである場合、ヘッダー名をリストする必要はありません。デフォルトでは、これは設定されていません。
getAllowedHeaders
許可された実際のリクエストヘッダーを返します。ない場合はnullを返します。addAllowedHeader
許可されたヘッダーを一度に 1 つずつ追加するためのsetAllowedHeaders(List)のバリアント。setExposedHeaders
実際のレスポンスに含まれる可能性があり、クライアントに公開できるレスポンスヘッダーのリストを設定します。特別な値"*"を使用すると、すべてのヘッダーを公開できます。Access-Control-Expose-Headersレスポンスヘッダーは、構成されたヘッダーのリストまたは"*"のいずれかに設定されます。CORS 仕様では、Access-Control-Allow-Credentialsがtrueに設定されている場合に"*"を許可しませんが、ほとんどのブラウザーは"*"をサポートしており、CORS 処理中にレスポンスヘッダーがすべて利用できるわけではないため、結果として、"*"は、 `allowCredentials` プロパティ。ヘッダー名が
Cache-Control、Content-Language、Expires、Last-ModifiedまたはPragmaのいずれかである場合、ヘッダー名をリストする必要はありません。デフォルトでは、これは設定されていません。
getExposedHeaders
公開する構成済みのレスポンスヘッダーを返します。存在しない場合はnullを返します。addExposedHeader
一度に 1 つの公開ヘッダーを追加するためのsetExposedHeaders(java.util.List<java.lang.String>)のバリアント。setAllowCredentials
ユーザー資格情報がサポートされているかどうか。このプロパティの設定は、
origins、originPatterns、allowedMethodsおよびallowedHeadersの処理方法に影響します。詳細については、関連する API ドキュメントを参照してください。注意 : このオプションは、構成されたドメインとの高レベルの信頼を確立し、Cookie や CSRF トークンなどのユーザー固有の機密情報を公開することにより、Web アプリケーションの表面攻撃を増やすことに注意してください。
デフォルトでは、これは設定されていません (つまり、ユーザー資格情報はサポートされていません)。
getAllowCredentials
構成済みのallowCredentialsフラグを返します。ない場合はnullを返します。setAllowPrivateNetwork
プライベートネットワークアクセスがデフォルトでそのようなアクセスを制限するユーザーエージェントに対してサポートされているかどうか。プライベートネットワークリクエストは、ターゲットサーバーの IP アドレスが、リクエストの開始元の IP アドレスよりもプライベートであるリクエストです。例: パブリック Web サイト (https://example.com) からプライベート Web サイト (https://router.local),) へのリクエスト、またはプライベート Web サイトからローカルホストへのリクエスト)。
このプロパティの設定は、
originsおよびoriginPatternsの処理方法に影響します。詳細については、関連する API ドキュメントを参照してください。デフォルトでは、これは設定されていません (つまり、プライベートネットワークアクセスはサポートされていません)。
- 導入:
- 5.3.32
- 関連事項:
getAllowPrivateNetwork
構成済みのallowPrivateNetworkフラグを返します。ない場合はnullを返します。- 導入:
- 5.3.32
- 関連事項:
setMaxAge
期間として、プリフライトリクエストからのレスポンスをクライアントがキャッシュできる期間を設定します。- 導入:
- 5.2
- 関連事項:
setMaxAge
プリフライトリクエストからのレスポンスをクライアントがキャッシュできる期間を秒単位で構成します。デフォルトでは、これは設定されていません。
getMaxAge
構成されたmaxAge値を返します。ない場合はnull値を返します。- 関連事項:
applyPermitDefaultValues
デフォルトでは、CorsConfigurationはクロスオリジンリクエストを許可しないため、明示的に設定する必要があります。このメソッドを使用して、GET、HEAD、POST のすべてのクロスオリジンリクエストを許可するが、すでに設定されている値をオーバーライドしないデフォルトに切り替えます。設定されていない値には、次のデフォルトが適用されます。
- CORS 仕様で定義されている特別な値
"*"を持つすべてのオリジンを許可します。これは、originsもoriginPatternsもまだ設定されていない場合にのみ設定されます。 - 「単純な」メソッド
GET、HEAD、POSTを許可します。 - すべてのヘッダーを許可します。
- 最大経過時間を 1800 秒(30 分)に設定します。
- CORS 仕様で定義されている特別な値
validateAllowCredentials
public void validateAllowCredentials()allowCredentialsがtrueの場合、"Access-Control-Allow-Origin" を"*"に設定できないため、allowedOriginsに特別な値"*"が含まれていないことを検証します。- 例外:
IllegalArgumentExceptionSE- 検証が失敗した場合- 導入:
- 5.3
validateAllowPrivateNetwork
public void validateAllowPrivateNetwork()- 例外:
IllegalArgumentExceptionSE- 検証が失敗した場合- 導入:
- 5.3.32
combine
提供されたCorsConfigurationの null 以外のプロパティをこれと組み合わせます。allowCredentialsやmaxAgeなどの単一の値を組み合わせる場合、thisプロパティは、null でないotherプロパティがある場合はそれによってオーバーライドされます。allowedOrigins、allowedMethods、allowedHeadersやexposedHeadersのようなリストの組み合わせは、相加的な方法で行われます。例:["GET", "POST"]を["PATCH"]と組み合わせると、["GET", "POST", "PATCH"]になります。ただし、["GET", "POST"]を["*"]と組み合わせると、["*"]になります。applyPermitDefaultValues()によって設定されたデフォルトの許可値は、明示的に定義された値によって上書きされることにも注意してください。- 戻り値:
- 結合された
CorsConfiguration、または提供された構成がnullの場合はthis構成
checkOrigin
構成された許可された発信元に対してリクエストの発信元を確認します。- パラメーター:
origin- チェックする原点- 戻り値:
- レスポンスに使用する起点、またはリクエストの起点が許可されていないことを意味する
null
checkHttpMethod
HTTP リクエストメソッド(またはプリフライトリクエストのAccess-Control-Request-Methodヘッダーのメソッド)を、構成された許可されたメソッドと照合します。- パラメーター:
requestMethod- チェックする HTTP リクエストメソッド- 戻り値:
- プリフライトリクエストのレスポンスでリストする HTTP メソッドのリスト、または指定された
requestMethodが許可されていない場合はnull
checkHeaders
提供されたリクエストヘッダー(またはプリフライトリクエストのAccess-Control-Request-Headersにリストされているヘッダー)を、構成された許可されたヘッダーと照合します。- パラメーター:
requestHeaders- チェックするリクエストヘッダー- 戻り値:
- プリフライトリクエストのレスポンスにリストする許可されたヘッダーのリスト、または提供されたリクエストヘッダーのいずれも許可されていない場合は
null