java - Jetty 更改/插入不同的 "Expires"http header

标签 java http servlets

我有一个独立的 jetty 应用程序。过去,对 Jetty 的请求带有过期 header :

Expires: Thu, 01 Jan 1970 00:00:00 GMT

这是一个与我设置的不同的过期 header 。我不明白为什么会发生这种情况?我在 servlet 过滤器内按如下方式设置过期(以及其他 header ):

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);
}

我按如下方式注册 servlet 过滤器:

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);

最佳答案

一些一般性建议。

  1. 在访问HttpServletResponse.getOutputStream()之前设置它或HttpServletResponse.getWriter()

  2. 设置日期 header (例如“过期”)时,请使用 HttpServletResponse.setDateHeader(String name, long date)

关于java - Jetty 更改/插入不同的 "Expires"http header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15399517/

相关文章:

php - 从 PHP 将 Http 状态代码返回给 Apache?

java - 如何获取 HTTPRequest 发出的时间?

使用 .NET 6 或更高版本时需要 Java SDK 11.0 或更高版本

java - UnsupportedClassVersionError 消息 "Bad java version"和 "Unsupported major.minor version"是否相同?

c# - 如何在不使用 C# 发出新请求的情况下读取当前 header ?

java - 如何转换十六进制字符串?

java - log4j2.xml 未在 Eclipse 中加载

java - JSOUP 转换 html 行时缺少标签

java - Android:我如何找到文件路径

http - 如何检查一个 HTTP 客户端是否仍然连接到 asp.net core 中的服务器?