クラス ForwardedHeaderUtils

java.lang.ObjectSE
org.springframework.web.util.ForwardedHeaderUtils

public abstract class ForwardedHeaderUtils extends ObjectSE
"Forwarded" および "X-Forwarded-*" ヘッダーの処理を支援するユーティリティクラス。

注意 : 転送ヘッダーの使用にはセキュリティ上の考慮事項があります。これらは、アプリケーションが挿入し、外部ソースからのヘッダーを明示的に削除する信頼できるプロキシの背後にない限り、使用すべきではありません。

ほとんどの場合、このクラスを直接使用するのではなく、ForwardedHeaderFilter または Spring MVC または ForwardedHeaderTransformer を利用して、ヘッダーから情報をできるだけ早く抽出し、そのようなヘッダーを破棄するようにしてください。Tomcat、Jetty、Reactor Netty などの基盤となるサーバーは、転送されたヘッダーをさらに早い段階で処理するオプションも提供しています。

導入:
6.1
作成者:
Rossen Stoyanchev
  • コンストラクターの詳細

    • ForwardedHeaderUtils

      public ForwardedHeaderUtils()
  • 方法の詳細

    • parseStandardHeader

      public static ForwardedHeaderUtils.ForwardedInfo parseStandardHeader(URISE uri, HttpHeaders headers, @Nullable InetSocketAddressSE remoteAddress, @Nullable InetSocketAddressSE localAddress)
      "Forwarded" ヘッダーを解析します。
      パラメーター:
      uri - リクエスト URI
      headers - 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 - リクエスト URI
      headers - HTTP ヘッダーから "Forwarded" ヘッダーを取得します
      remoteAddress - 解析された "for" 値のデフォルトポートの場合
      localAddress - 解析された "by" 値のデフォルトポート用。この引数は現在無視され、byAddress は常に null になります。
      戻り値:
      "X-Forwarded-*" ヘッダーから取得したスキーム、ホスト、ポートを持つ ForwardedHeaderUtils.ForwardedInfo と、解析された "for" アドレス
      導入:
      6.1.29
    • adaptFromForwardedHeaders

      public static UriComponentsBuilder adaptFromForwardedHeaders(URISE uri, HttpHeaders headers)
      指定された URISE のスキーム + ホスト + ポートを、"Forwarded" ヘッダー ( RFC 7239 を参照)、または "X-Forwarded-Host"、"X-Forwarded-Port"、"X-Forwarded-Proto" ヘッダーから適合させます。「転送済み」は存在しません。
      パラメーター:
      uri - リクエスト URI
      headers - 考慮すべき HTTP ヘッダー
      戻り値:
      リクエスト URI と転送されたヘッダーからの追加の更新を反映する UriComponentsBuilder
    • parseForwardedFor

      public static @Nullable InetSocketAddressSE parseForwardedFor(URISE uri, HttpHeaders headers, @Nullable InetSocketAddressSE remoteAddress)
      最初の「転送済み」を解析します: クライアントのアドレスを表す InetSocketAddress への for =... " または " X-Forwarded-For " ヘッダー値。
      パラメーター:
      uri - リクエスト URI
      headers - 転送されたヘッダーが含まれる可能性があるリクエストヘッダー
      remoteAddress - 現在のリモートアドレス
      戻り値:
      抽出されたホストとポートを含む InetSocketAddress、またはヘッダーが存在しない場合は null 
    • parseForwardedBy

      public static @Nullable InetSocketAddressSE parseForwardedBy(URISE uri, HttpHeaders headers, @Nullable InetSocketAddressSE localAddress)
      最初の「転送済み」を解析します: by=..." ヘッダー値を、サーバーのアドレスを表す InetSocketAddress に変換します。
      パラメーター:
      uri - リクエスト URI
      headers - 転送されたヘッダーが含まれる可能性があるリクエストヘッダー
      localAddress - 現在のローカルアドレス
      戻り値:
      抽出されたホストとポートを含む InetSocketAddress、またはヘッダーが存在しない場合は null 
      導入:
      7.0