クラス CorsConfiguration
デフォルトでは、新しく作成された CorsConfiguration
はクロスオリジンリクエストを許可しないため、何を許可するかを明示的に構成する必要があります。applyPermitDefaultValues()
を使用して初期化モデルを反転し、GET、HEAD、POST リクエストに対するすべてのクロスオリジンリクエストを許可するオープンデフォルトから始めます。
- 導入:
- 4.2
- 作成者:
- Sebastien Deleuze, Rossen Stoyanchev, Juergen Hoeller, Sam Brannen, Ruslan Akhundov
- 関連事項:
フィールドサマリー
コンストラクターのサマリー
コンストラクター説明デフォルトでは、どのオリジンでもクロスオリジンリクエストが許可されていない新しいCorsConfiguration
インスタンスを作成します。指定されたCorsConfiguration
からすべての値をコピーして、新しいCorsConfiguration
インスタンスを構築します。メソッドのサマリー
修飾子と型メソッド説明void
addAllowedHeader
(StringSE allowedHeader) 許可されたヘッダーを一度に 1 つずつ追加するためのsetAllowedHeaders(List)
のバリアント。void
addAllowedMethod
(StringSE method) 許可されたメソッドを一度に 1 つずつ追加するためのsetAllowedMethods(java.util.List<java.lang.String>)
のバリアント。void
addAllowedMethod
(HttpMethod method) 許可されたメソッドを一度に 1 つずつ追加するためのsetAllowedMethods(java.util.List<java.lang.String>)
のバリアント。void
addAllowedOrigin
(StringSE origin) 一度に 1 つの原点を追加するためのsetAllowedOrigins(java.util.List<java.lang.String>)
のバリアント。void
addAllowedOriginPattern
(StringSE originPattern) 一度に 1 つの原点を追加するためのsetAllowedOriginPatterns(java.util.List<java.lang.String>)
のバリアント。void
addExposedHeader
(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
値を返します。void
setAllowCredentials
(BooleanSE allowCredentials) ユーザー資格情報がサポートされているかどうか。void
setAllowedHeaders
(ListSE<StringSE> allowedHeaders) プリフライトリクエストが実際のリクエスト中に使用できるようにリストできるヘッダーのリストを設定します。void
setAllowedMethods
(ListSE<StringSE> allowedMethods) 許可する HTTP メソッド (例:"GET"
、"POST"
、"PUT"
など) を設定します。setAllowedOriginPatterns
(ListSE<StringSE> allowedOriginPatterns) ポートリストに加えて、ホスト名の任意の場所に "*" が付いた、より柔軟なオリジンパターンをサポートするsetAllowedOrigins(java.util.List<java.lang.String>)
の代替。void
setAllowedOrigins
(ListSE<StringSE> origins) クロスオリジンリクエストが許可されるオリジンのリスト。各値は次のいずれかになります: 特定のドメイン (例:"https://domain1.com"
) 特定のドメインのカンマ区切りリスト (例:"https://a1.com,https://a2.com"
)。値がプロパティプレースホルダー (例:"${origin}"
) を通じて解決される場合に便利です。このようなプレースホルダーは外部で解決する必要があることに注意してください。void
setAllowPrivateNetwork
(BooleanSE allowPrivateNetwork) プライベートネットワークアクセスがデフォルトでそのようなアクセスを制限するユーザーエージェントに対してサポートされているかどうか。void
setExposedHeaders
(ListSE<StringSE> exposedHeaders) 実際のレスポンスに含まれる可能性があり、クライアントに公開できるレスポンスヘッダーのリストを設定します。void
プリフライトリクエストからのレスポンスをクライアントがキャッシュできる期間を秒単位で構成します。void
setMaxAge
(DurationSE maxAge) 期間として、プリフライトリクエストからのレスポンスをクライアントがキャッシュできる期間を設定します。void
allowCredentials
が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"
のみが許可されます。デフォルトでは、これは設定されていません。
注意 : CORS チェックは、クライアントから発信されたアドレスを反映するために、存在する場合、"Forwarded" (RFC 7239)、"X-Forwarded-Host"、"X-Forwarded-Port"、"X-Forwarded-Proto" ヘッダーの値を使用します。
ForwardedHeaderFilter
を使用して、抽出して使用するか、このようなヘッダーを破棄するかを中央から選択することを検討してください。このフィルターの詳細については、Spring Framework リファレンスを参照してください。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