public class ForwardedHeaderFilter extends OncePerRequestFilter
このフィルターは、"Forwarded" および "X-Forwarded-*" ヘッダーが除去されて使用されない removeOnly
モードでも使用できます。
ALREADY_FILTERED_SUFFIX
logger
コンストラクターと説明 |
---|
ForwardedHeaderFilter() |
修飾子と型 | メソッドと説明 |
---|---|
protected void | doFilterInternal(HttpServletRequestEE request, HttpServletResponseEE response, FilterChainEE filterChain) doFilter と同じ契約ですが、単一のリクエストスレッド内のリクエストごとに 1 回だけ呼び出されることが保証されています。 |
protected void | doFilterNestedErrorDispatch(HttpServletRequestEE request, HttpServletResponseEE response, FilterChainEE filterChain) 通常、ERROR ディスパッチは、REQUEST ディスパッチが完了した後に発生し、フィルターチェーンが新たに開始されます。 |
void | setRelativeRedirects(boolean relativeRedirects) このプロパティを使用して、 RelativeRedirectFilter に従って相対リダイレクトを有効にし、そのフィルターと同じレスポンスラッパーを使用するか、両方が構成されている場合は、一方のみがラップします。 |
void | setRemoveOnly(boolean removeOnly) "Forwarded" または "X-Forwarded-*" ヘッダーのみが削除され、それらの情報は無視されるモードを有効にします。 |
protected boolean | shouldNotFilter(HttpServletRequestEE request) カスタムフィルタリングコントロールのサブクラスでオーバーライドでき、指定されたリクエストのフィルタリングを回避するために true を返します。 |
protected boolean | shouldNotFilterAsyncDispatch() Servlet 3.0 で導入されたディスパッチャー型 javax.servlet.DispatcherType.ASYNC は、1 つのリクエストの過程で複数のスレッドでフィルターを呼び出すことができることを意味します。 |
protected boolean | shouldNotFilterErrorDispatch() サーブレットコンテナーが web.xml にマッピングされたときなどのエラーディスパッチをフィルタリングするかどうか。 |
doFilter, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted
addRequiredProperty, afterPropertiesSet, createEnvironment, destroy, getEnvironment, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public void setRemoveOnly(boolean removeOnly)
removeOnly
- 転送されたヘッダーを破棄して無視するかどうか public void setRelativeRedirects(boolean relativeRedirects)
RelativeRedirectFilter
に従って相対リダイレクトを有効にし、そのフィルターと同じレスポンスラッパーを使用するか、両方が構成されている場合は、一方のみがラップします。 デフォルトでは、このプロパティが false に設定されている場合、HttpServletResponse.sendRedirect(String)
EE への呼び出しは、転送されたヘッダーも考慮に入れて、相対 URL を絶対 URL に変更するためにオーバーライドされます。
relativeRedirects
- 相対リダイレクトを使用するかどうか protected boolean shouldNotFilter(HttpServletRequestEE request)
OncePerRequestFilter
true
を返します。 デフォルトの実装は、常に false
を返します。
OncePerRequestFilter
の shouldNotFilter
request
- 現在の HTTP リクエスト protected boolean shouldNotFilterAsyncDispatch()
OncePerRequestFilter
javax.servlet.DispatcherType.ASYNC
は、1 つのリクエストの過程で複数のスレッドでフィルターを呼び出すことができることを意味します。いくつかのフィルターは、初期スレッド(たとえば、リクエストの折り返し)のみをフィルターする必要がありますが、他のフィルターは、たとえばスレッドローカルを設定するため、または最後に最終処理を実行するために、追加の各スレッドで少なくとも 1 回呼び出す必要がある場合があります web.xml
を介して、または ServletContext
を介して Java で特定のディスパッチャー型を処理するためにフィルターをマップできますが、サーブレットコンテナーはディスパッチャー型に関して異なるデフォルトを適用する場合があることに注意してください。このフラグは、フィルターの設計意図を強制します。
デフォルトの戻り値は "true" です。これは、後続の非同期ディスパッチ中にフィルターが呼び出されないことを意味します。"false" の場合、フィルターは非同期ディスパッチ中に呼び出され、単一スレッド内のリクエスト中に 1 回だけ呼び出されるという同じ保証があります。
OncePerRequestFilter
の shouldNotFilterAsyncDispatch
protected boolean shouldNotFilterErrorDispatch()
OncePerRequestFilter
web.xml
にマッピングされたときなどのエラーディスパッチをフィルタリングするかどうか。デフォルトの戻り値は "true" です。これは、エラーディスパッチの場合にフィルターが呼び出されないことを意味します。OncePerRequestFilter
の shouldNotFilterErrorDispatch
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
protected void doFilterNestedErrorDispatch(HttpServletRequestEE request, HttpServletResponseEE response, FilterChainEE filterChain) throws ServletExceptionEE, IOExceptionSE
OncePerRequestFilter
sendError
を呼び出した結果。その場合、同じスレッドのチェーンフィルターにまだありますが、リクエストとレスポンスは元のラップされていないものに切り替えられています。 サブクラスはこのメソッドを使用して、ネストされた ERROR ディスパッチをフィルタリングし、リクエストまたはレスポンスにラップを再適用できます。ThreadLocal
コンテキスト(存在する場合)は、フィルターチェーン内に入れ子になっているため、まだアクティブである必要があります。
OncePerRequestFilter
の doFilterNestedErrorDispatch
ServletExceptionEE
IOExceptionSE