クラス ForwardedHeaderFilter
- 実装されたすべてのインターフェース:
FilterEE
、Aware
、BeanNameAware
、DisposableBean
、InitializingBean
、EnvironmentAware
、EnvironmentCapable
、ServletContextAware
アプリケーションは、ヘッダーが意図したとおりにプロキシによって追加されたのか、悪意のあるクライアントによって追加されたのかを知ることができないため、転送されたヘッダーにはセキュリティ上の考慮事項があります。これが、信頼の境界にあるプロキシを構成して、外部からの信頼できない転送ヘッダーを削除する必要がある理由です。
ForwardedHeaderFilter を removeOnly
で構成することもできます。その場合、ヘッダーは削除されますが、使用されません。
- 導入:
- 4.3
- 作成者:
- Rossen Stoyanchev, Edd ú Mel é ndez, Rob Winch, Brian Clozel
- 関連事項:
フィールドサマリー
クラス org.springframework.web.filter.OncePerRequestFilter から継承されたフィールド
ALREADY_FILTERED_SUFFIX
コンストラクターのサマリー
メソッドのサマリー
修飾子と型メソッド説明protected void
doFilterInternal
(HttpServletRequestEE request, HttpServletResponseEE response, FilterChainEE filterChain) doFilter
と同じ契約ですが、単一のリクエストスレッド内のリクエストごとに 1 回だけ呼び出されることが保証されています。protected void
doFilterNestedErrorDispatch
(HttpServletRequestEE request, HttpServletResponseEE response, FilterChainEE filterChain) 通常、ERROR ディスパッチは、REQUEST ディスパッチが完了した後に発生し、フィルターチェーンが新たに開始されます。protected StringSE
formatRequest
(HttpServletRequestEE request) HTTP メソッドと URL を含むロギング目的でリクエストをフォーマットします。void
setRelativeRedirects
(boolean relativeRedirects) このプロパティを使用して、RelativeRedirectFilter
に従って相対リダイレクトを有効にし、そのフィルターと同じレスポンスラッパーを使用するか、両方が構成されている場合は、一方のみがラップします。void
setRemoveOnly
(boolean removeOnly) "Forwarded" または "X-Forwarded-*" ヘッダーのみが削除され、それらの情報は無視されるモードを有効にします。protected boolean
shouldNotFilter
(HttpServletRequestEE request) カスタムフィルタリングコントロールのサブクラスでオーバーライドでき、指定されたリクエストのフィルタリングを回避するためにtrue
を返します。protected boolean
ディスパッチャー型jakarta.servlet.DispatcherType.ASYNC
は、1 つのリクエストの過程で複数のスレッドでフィルターを呼び出すことができることを意味します。protected boolean
サーブレットコンテナーがweb.xml
にマッピングされたときなどのエラーディスパッチをフィルタリングするかどうか。クラス org.springframework.web.filter.OncePerRequestFilter から継承されたメソッド
doFilter, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted
クラス org.springframework.web.filter.GenericFilterBean から継承されたメソッド
addRequiredProperty, afterPropertiesSet, createEnvironment, destroy, getEnvironment, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext
コンストラクターの詳細
ForwardedHeaderFilter
public ForwardedHeaderFilter()
メソッドの詳細
setRemoveOnly
public void setRemoveOnly(boolean removeOnly) "Forwarded" または "X-Forwarded-*" ヘッダーのみが削除され、それらの情報は無視されるモードを有効にします。- パラメーター:
removeOnly
- 転送されたヘッダーを破棄して無視するかどうか- 導入:
- 4.3.9
setRelativeRedirects
public void setRelativeRedirects(boolean relativeRedirects) このプロパティを使用して、RelativeRedirectFilter
に従って相対リダイレクトを有効にし、そのフィルターと同じレスポンスラッパーを使用するか、両方が構成されている場合は、一方のみがラップします。デフォルトでは、このプロパティが false に設定されている場合、
HttpServletResponse.sendRedirect(String)
EE への呼び出しは、転送されたヘッダーも考慮に入れて、相対 URL を絶対 URL に変更するためにオーバーライドされます。- パラメーター:
relativeRedirects
- 相対リダイレクトを使用するかどうか- 導入:
- 4.3.10
shouldNotFilter
クラスからコピーされた説明:OncePerRequestFilter
カスタムフィルタリングコントロールのサブクラスでオーバーライドでき、指定されたリクエストのフィルタリングを回避するためにtrue
を返します。デフォルトの実装は、常に
false
を返します。- オーバーライド:
- クラス
OncePerRequestFilter
のshouldNotFilter
- パラメーター:
request
- 現在の HTTP リクエスト- 戻り値:
- 指定されたリクエストを濾過するべきではありませんか
shouldNotFilterAsyncDispatch
protected boolean shouldNotFilterAsyncDispatch()クラスからコピーされた説明:OncePerRequestFilter
ディスパッチャー型jakarta.servlet.DispatcherType.ASYNC
は、1 つのリクエストの過程で複数のスレッドでフィルターを呼び出すことができることを意味します。一部のフィルターは最初のスレッドをフィルタリングするだけで済みます (例: リクエスト折り返し)。その他のフィルターは、たとえばスレッドローカルを設定するため、または最後に最終処理を実行するために、追加のスレッドごとに少なくとも 1 回呼び出す必要があります。フィルターは、
web.xml
を介して特定のディスパッチャー型を処理するように、またはServletContext
を介して Java で処理するようにマップできますが、サーブレットコンテナーはディスパッチャー型に関して異なるデフォルトを適用する場合があることに注意してください。このフラグは、フィルターの設計意図を強制します。デフォルトの戻り値は "true" です。これは、後続の非同期ディスパッチ中にフィルターが呼び出されないことを意味します。"false" の場合、フィルターは非同期ディスパッチ中に呼び出され、単一スレッド内のリクエスト中に 1 回だけ呼び出されるという同じ保証があります。
- オーバーライド:
- クラス
OncePerRequestFilter
のshouldNotFilterAsyncDispatch
shouldNotFilterErrorDispatch
protected boolean shouldNotFilterErrorDispatch()クラスからコピーされた説明:OncePerRequestFilter
サーブレットコンテナーがweb.xml
にマッピングされたときなどのエラーディスパッチをフィルタリングするかどうか。デフォルトの戻り値は "true" です。これは、エラーディスパッチの場合にフィルターが呼び出されないことを意味します。- オーバーライド:
- クラス
OncePerRequestFilter
のshouldNotFilterErrorDispatch
doFilterInternal
protected void doFilterInternal(HttpServletRequestEE request, HttpServletResponseEE response, FilterChainEE filterChain) throws ServletExceptionEE, IOExceptionSE クラスからコピーされた説明:OncePerRequestFilter
doFilter
と同じ契約ですが、単一のリクエストスレッド内のリクエストごとに 1 回だけ呼び出されることが保証されています。詳細については、OncePerRequestFilter.shouldNotFilterAsyncDispatch()
を参照してください。デフォルトの ServletRequest および ServletResponse の代わりに、HttpServletRequest および HttpServletResponse 引数を提供します。
- 次で指定:
- クラス
OncePerRequestFilter
のdoFilterInternal
- 例外:
ServletExceptionEE
IOExceptionSE
formatRequest
HTTP メソッドと URL を含むロギング目的でリクエストをフォーマットします。- パラメーター:
request
- フォーマットのリクエスト- 戻り値:
- 表示する文字列、決して空または
null
doFilterNestedErrorDispatch
protected void doFilterNestedErrorDispatch(HttpServletRequestEE request, HttpServletResponseEE response, FilterChainEE filterChain) throws ServletExceptionEE, IOExceptionSE クラスからコピーされた説明:OncePerRequestFilter
通常、ERROR ディスパッチは、REQUEST ディスパッチが完了した後に発生し、フィルターチェーンが新たに開始されます。ただし、一部のサーバーでは、ERROR ディスパッチが REQUEST ディスパッチ内にネストされている場合があります。レスポンスでsendError
を呼び出した結果。その場合、同じスレッドのチェーンフィルターにまだありますが、リクエストとレスポンスは元のラップされていないものに切り替えられています。サブクラスはこのメソッドを使用して、ネストされた ERROR ディスパッチをフィルタリングし、リクエストまたはレスポンスにラップを再適用できます。
ThreadLocal
コンテキスト(存在する場合)は、フィルターチェーン内に入れ子になっているため、まだアクティブである必要があります。- オーバーライド:
- クラス
OncePerRequestFilter
のdoFilterNestedErrorDispatch
- 例外:
ServletExceptionEE
IOExceptionSE