web-dev-qa-db-ja.com

TomcatでETagヘッダーを無効にする方法

Tomcatは、デフォルトで各応答とともにETagヘッダーを送信するようです。概説した理由でこれらを無効にしたい ここ 。 Apache構成でそれらを取り除くことができることは知っていますが、Tomcat側でそれらを無効にする方法はありますか?

3
Ben Williams

箱から出して無効にする方法はありません。ただし、ETagは、request.setHeader()を介してDefaultServletによって設定されます。したがって、それらを無効にする簡単な回避策は、タグを飲み込むDefaultServletのフィルターを作成することです。例えば:

 void doFilter(ServletRequest request、ServletRequest reponse){
 chain.doFilter(request、new HttpServletResponseWrapper(response){
 public void setHeader(String name、String value){
 if(! "etag" .equalsIgnoreCase(name)){
 super.setHeader(name、value); 
} 
} 
}); 
} 

そしてweb.xmlで:

 <filter> 
 <filter-name> noetag </ filter-name> 
 <filter-class> foo.NoEtagFilter </ filter-class> 
 </filter> 
 <filter-mapping> 
 <filter-name> noetag </ filter-name> 
 <servlet-name> default </ servlet-name> 
 <dispatcher> REQUEST </ dispatcher> 
 <dispatcher> FORWARD </ dispatcher> 
 </ filter-mapping> 
8
Tim Funk