スタンドアロンの桟橋アプリケーションがあります。Jettyへのリクエストは、過去に期限切れヘッダーで処理されています。
Expires: Thu, 01 Jan 1970 00:00:00 GMT
これは、私が設定しているものとは異なる有効期限ヘッダーです。なぜこれが起こっているのか理解できませんか?サーブレットフィルター内で、(他のヘッダーとともに)有効期限を次のように設定しています。
public class AuthorisationFilter implements Filter {
public void init (FilterConfig config) throws ServletException {
expires = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");
expires.setTimeZone(TimeZone.getTimeZone("GMT"));
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// ....
if(url.endsWith(".eot") || url.endsWith(".ttf") || url.endsWith(".woff")) {
response.setHeader("Expires", expires.format(new Date(new Date().getTime()+(1000*86400))));
} else if(url.endsWith(".css") || url.endsWith(".pdf") || url.endsWith(".png") || url.endsWith(".gif") || url.endsWith(".jpg") || url.endsWith(".ico")) {
response.setHeader("Expires", expires.format(new Date(new Date().getTime()+(1000*500))));
} else {
response.setHeader("Expires", "Sat, 6 May 1995 1:00:00 GMT");
}
chain.doFilter(request, response);
}
次のようにサーブレットフィルタを登録しています。
Server server = new Server(port);
ServletContextHandler context = new ServletContextHandler(server, "/", false, false);
FilterHolder f = new FilterHolder(new UrlFilter(jee));
context.addFilter(f, "/*", null);
f = new FilterHolder(new AuthorisationFilter(jee);
context.addFilter(f, "/*", null);