クラス ForwardedHeaderUtils
java.lang.ObjectSE
org.springframework.web.util.ForwardedHeaderUtils
"Forwarded" および "X-Forwarded-*" ヘッダーの処理を支援するユーティリティクラス。
注意 : 転送ヘッダーの使用にはセキュリティ上の考慮事項があります。これらは、アプリケーションが挿入し、外部ソースからのヘッダーを明示的に削除する信頼できるプロキシの背後にない限り、使用すべきではありません。
ほとんどの場合、このクラスを直接使用するのではなく、ForwardedHeaderFilter または Spring MVC または ForwardedHeaderTransformer を利用して、ヘッダーから情報をできるだけ早く抽出し、そのようなヘッダーを破棄するようにしてください。Tomcat、Jetty、Reactor Netty などの基盤となるサーバーは、転送されたヘッダーをさらに早い段階で処理するオプションも提供しています。
- 導入:
- 6.1
- 作成者:
- Rossen Stoyanchev
ネストされたクラスの概要
ネストされたクラス修飾子と型クラス説明static final record"Forwarded" ヘッダーまたは "X-Forwarded-*" 代替ヘッダーのいずれかを解析した結果をまとめたコンテナー。コンストラクター概要
コンストラクター方法の概要
修飾子と型メソッド説明static UriComponentsBuilderadaptFromForwardedHeaders(URISE uri, HttpHeaders headers) static @Nullable InetSocketAddressSEparseForwardedBy(URISE uri, HttpHeaders headers, @Nullable InetSocketAddressSE localAddress) 最初の「転送済み」を解析します: by=..." ヘッダー値を、サーバーのアドレスを表すInetSocketAddressに変換します。static @Nullable InetSocketAddressSEparseForwardedFor(URISE uri, HttpHeaders headers, @Nullable InetSocketAddressSE remoteAddress) 最初の「転送済み」を解析します: クライアントのアドレスを表すInetSocketAddressへの for =... " または " X-Forwarded-For " ヘッダー値。parseStandardHeader(URISE uri, HttpHeaders headers, @Nullable InetSocketAddressSE remoteAddress, @Nullable InetSocketAddressSE localAddress) "Forwarded" ヘッダーを解析します。parseXForwardedHeaders(URISE uri, HttpHeaders headers, @Nullable InetSocketAddressSE remoteAddress, @Nullable InetSocketAddressSE localAddress) "X-Forwarded-Proto"、"X-Forwarded-Host"、"X-Forwarded-Port"、"X-Forwarded-For" ヘッダーを解析します。これらは "Forwarded" ヘッダーの代替となります。
コンストラクターの詳細
ForwardedHeaderUtils
public ForwardedHeaderUtils()
方法の詳細
parseStandardHeader
public static ForwardedHeaderUtils.ForwardedInfo parseStandardHeader(URISE uri, HttpHeaders headers, @Nullable InetSocketAddressSE remoteAddress, @Nullable InetSocketAddressSE localAddress) "Forwarded" ヘッダーを解析します。- パラメーター:
uri- リクエストURIheaders- HTTP ヘッダーから "Forwarded" ヘッダーを取得しますremoteAddress- 解析された "for" 値のデフォルトポートの場合localAddress- 解析された "by" 値のデフォルトポート- 戻り値:
- 解析結果を含む
ForwardedHeaderUtils.ForwardedInfo - 導入:
- 6.1.29
- 関連事項:
parseXForwardedHeaders
public static ForwardedHeaderUtils.ForwardedInfo parseXForwardedHeaders(URISE uri, HttpHeaders headers, @Nullable InetSocketAddressSE remoteAddress, @Nullable InetSocketAddressSE localAddress) "X-Forwarded-Proto"、"X-Forwarded-Host"、"X-Forwarded-Port"、"X-Forwarded-For" ヘッダーを解析します。これらは "Forwarded" ヘッダーの代替となります。現在 "X-Forwarded-By" の解析は行われていないため、
ForwardedHeaderUtils.ForwardedInfoのbyAddressは常にnullになります。- パラメーター:
uri- リクエストURIheaders- HTTP ヘッダーから "Forwarded" ヘッダーを取得しますremoteAddress- 解析された "for" 値のデフォルトポートの場合localAddress- 解析された "by" 値のデフォルトポート用。この引数は現在無視され、byAddress は常にnullになります。- 戻り値:
- "X-Forwarded-*" ヘッダーから取得したスキーム、ホスト、ポートを持つ
ForwardedHeaderUtils.ForwardedInfoと、解析された "for" アドレス - 導入:
- 6.1.29
adaptFromForwardedHeaders
指定されたURISE のスキーム + ホスト + ポートを、"Forwarded" ヘッダー ( RFC 7239 を参照)、または "X-Forwarded-Host"、"X-Forwarded-Port"、"X-Forwarded-Proto" ヘッダーから適合させます。「転送済み」は存在しません。- パラメーター:
uri- リクエストURIheaders- 考慮すべき HTTP ヘッダー- 戻り値:
- リクエスト URI と転送されたヘッダーからの追加の更新を反映する
UriComponentsBuilder
parseForwardedFor
public static @Nullable InetSocketAddressSE parseForwardedFor(URISE uri, HttpHeaders headers, @Nullable InetSocketAddressSE remoteAddress) 最初の「転送済み」を解析します: クライアントのアドレスを表すInetSocketAddressへの for =... " または " X-Forwarded-For " ヘッダー値。- パラメーター:
uri- リクエストURIheaders- 転送されたヘッダーが含まれる可能性があるリクエストヘッダーremoteAddress- 現在のリモートアドレス- 戻り値:
- 抽出されたホストとポートを含む
InetSocketAddress、またはヘッダーが存在しない場合はnull
parseForwardedBy
public static @Nullable InetSocketAddressSE parseForwardedBy(URISE uri, HttpHeaders headers, @Nullable InetSocketAddressSE localAddress) 最初の「転送済み」を解析します: by=..." ヘッダー値を、サーバーのアドレスを表すInetSocketAddressに変換します。- パラメーター:
uri- リクエストURIheaders- 転送されたヘッダーが含まれる可能性があるリクエストヘッダーlocalAddress- 現在のローカルアドレス- 戻り値:
- 抽出されたホストとポートを含む
InetSocketAddress、またはヘッダーが存在しない場合はnull - 導入:
- 7.0