クラス 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) 許可する実際のリクエストヘッダーを追加します。void
addAllowedMethod
(StringSE method) 許可する HTTP メソッドを追加します。void
addAllowedMethod
(HttpMethod method) 許可する HTTP メソッドを追加します。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) 公開するレスポンスヘッダーを追加します。デフォルトでは、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
を返します。公開する構成済みのレスポンスヘッダーを返します。存在しない場合はnull
を返します。構成されたmaxAge
値を返します。ない場合はnull
値を返します。void
setAllowCredentials
(BooleanSE allowCredentials) ユーザー資格情報がサポートされているかどうか。void
setAllowedHeaders
(ListSE<StringSE> allowedHeaders) プリフライトリクエストが実際のリクエスト中に使用できるようにリストできるヘッダーのリストを設定します。void
setAllowedMethods
(ListSE<StringSE> allowedMethods) 許可する HTTP メソッドを設定します。setAllowedOriginPatterns
(ListSE<StringSE> allowedOriginPatterns) ポートリストに加えて、ホスト名の任意の場所に "*" が付いた、より柔軟なオリジンパターンをサポートするsetAllowedOrigins(java.util.List<java.lang.String>)
の代替。void
setAllowedOrigins
(ListSE<StringSE> origins) クロスオリジンリクエストが許可されるオリジンのリスト。各値は次のいずれかです。特定のドメイン。void
setExposedHeaders
(ListSE<StringSE> exposedHeaders) 単純なヘッダー以外のレスポンスヘッダーのリストを設定します(つまりvoid
プリフライトリクエストからのレスポンスをクライアントがキャッシュできる期間を秒単位で構成します。void
setMaxAge
(DurationSE maxAge) 期間として、プリフライトリクエストからのレスポンスをクライアントがキャッシュできる期間を設定します。void
allowCredentials
がtrue
の場合、"Access-Control-Allow-Origin" を"*"
に設定できないため、allowedOrigins
に特別な値"*"
が含まれていないことを検証します。
フィールドの詳細
ALL
すべてのオリジン、メソッド、ヘッダーを表すワイルドカード。- 関連事項:
コンストラクターの詳細
CorsConfiguration
public CorsConfiguration()デフォルトでは、どのオリジンでもクロスオリジンリクエストが許可されていない新しいCorsConfiguration
インスタンスを作成します。CorsConfiguration
指定されたCorsConfiguration
からすべての値をコピーして、新しいCorsConfiguration
インスタンスを構築します。
メソッドの詳細
setAllowedOrigins
クロスオリジンリクエストが許可されるオリジンのリスト。各値は次のいずれかです。- 特定のドメイン。
"https://domain1.com"
- 特定のドメインのカンマ区切りのリスト。
"https://a1.com,https://a2.com"
; これは、値がプロパティプレースホルダーを通じて解決される場合に便利です。"${origin}"
; このようなプレースホルダは外部で解決する必要があることに注意してください。 - すべてのオリジンの CORS 定義の特別な値
"*"
一致したプリフライトおよび実際のリクエストの場合、
Access-Control-Allow-Origin
レスポンスヘッダーは一致したドメイン値または"*"
のいずれかに設定されます。ただし、allowCredentials
がtrue
に設定されている場合、CORS 仕様では"*"
が許可されておらず、5.3 以降、その組み合わせは拒否され、代わりに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
で使用できないallowedOrigins
とは対照的に、allowedOriginPattern が一致すると、Access-Control-Allow-Origin
レスポンスヘッダーは一致したオリジンに設定され、"*"
やパターンには設定されません。allowedOriginPatterns は、true
に設定されたsetAllowCredentials(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"
など特別な値
"*"
はすべてのメソッドを許可します。設定しない場合、
"GET"
と"HEAD"
のみが許可されます。デフォルトでは、これは設定されていません。
注意 : CORS チェックは、クライアントから発信されたアドレスを反映するために、存在する場合、"Forwarded" (RFC 7239)、"X-Forwarded-Host"、"X-Forwarded-Port"、"X-Forwarded-Proto" ヘッダーの値を使用します。
ForwardedHeaderFilter
を使用して、抽出して使用するか、このようなヘッダーを破棄するかを中央から選択することを検討してください。このフィルターの詳細については、Spring Framework リファレンスを参照してください。getAllowedMethods
許可された HTTP メソッド、またはnull
を返します。この場合、"GET"
および"HEAD"
のみが許可されます。addAllowedMethod
許可する HTTP メソッドを追加します。addAllowedMethod
許可する HTTP メソッドを追加します。setAllowedHeaders
プリフライトリクエストが実際のリクエスト中に使用できるようにリストできるヘッダーのリストを設定します。特別な値
"*"
を使用すると、実際のリクエストで任意のヘッダーを送信できます。ヘッダー名が
Cache-Control
、Content-Language
、Expires
、Last-Modified
またはPragma
のいずれかである場合、ヘッダー名をリストする必要はありません。デフォルトでは、これは設定されていません。
getAllowedHeaders
許可された実際のリクエストヘッダーを返します。ない場合はnull
を返します。addAllowedHeader
許可する実際のリクエストヘッダーを追加します。setExposedHeaders
実際のレスポンスが持つ可能性があり、公開できる単純なヘッダー(つまり、Cache-Control
、Content-Language
、Content-Type
、Expires
、Last-Modified
またはPragma
)以外のレスポンスヘッダーのリストを設定します。特別な値
"*"
を使用すると、資格情報のないリクエストに対してすべてのヘッダーを公開できます。デフォルトでは、これは設定されていません。
getExposedHeaders
公開する構成済みのレスポンスヘッダーを返します。存在しない場合はnull
を返します。addExposedHeader
公開するレスポンスヘッダーを追加します。特別な値
"*"
を使用すると、資格情報のないリクエストに対してすべてのヘッダーを公開できます。setAllowCredentials
ユーザー資格情報がサポートされているかどうか。デフォルトでは、これは設定されていません(つまり、ユーザー資格情報はサポートされていません)。
getAllowCredentials
構成済みのallowCredentials
フラグを返します。ない場合はnull
を返します。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
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