Servlets Jetty丢弃缓存控制

Servlets Jetty丢弃缓存控制,servlets,http-headers,jetty,cache-control,Servlets,Http Headers,Jetty,Cache Control,我在Jetty上部署servlet时遇到问题。Jetty似乎只是删除了servlet中生成的缓存控制(和Pragma)头 public abstract class Servlet extends HttpServlet { ... @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ...

我在Jetty上部署servlet时遇到问题。Jetty似乎只是删除了servlet中生成的缓存控制(和Pragma)头

public abstract class Servlet extends HttpServlet {
  ...
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    ...
    resp.setHeader("Cache-Control", "private, no-cache");
    resp.setHeader("Pragma", "no-cache");
    ...
  }
  ...
}
当我将这样的servlet部署到Tomcat中时,所有的头(特别是缓存控制和Pragma)都是预期的。但码头似乎吞下了这些头

有什么建议吗?

使用

使用测试servlet

package example;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class CacheServlet extends HttpServlet
{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    {
        resp.setHeader("Cache-Control", "private, no-cache");
        resp.setHeader("Pragma", "no-cache");

        resp.setContentType("text/plain");
        resp.getWriter().println("Hello Cache Test");
    }
}
它在这里工作,这是Chrome网络检查面板显示的

HTTP/1.1200正常
日期:2014年10月6日星期一14:45:05 GMT
缓存控制:专用,无缓存
Pragma:没有缓存
内容类型:文本/纯文本;字符集=ISO-8859-1
内容长度:17
服务器:Jetty(8.0.3.v20111011)
这就是旋度显示的

$curl--转储头-http://localhost:8080/cachetest/cachetest
HTTP/1.1200ok
日期:2014年10月6日星期一14:47:51 GMT
缓存控制:专用,无缓存
Pragma:没有缓存
内容类型:文本/纯文本;字符集=ISO-8859-1
内容长度:17
服务器:Jetty(8.0.3.v20111011)
你好缓存测试
它起作用了


显然,还有其他的东西正在从您的响应中删除这些标题。查找过滤器、框架库、缓存层、透明代理、普通代理、负载平衡器和/或网络硬件等内容,作为看似已删除的头文件的源文件。

Jetty的哪个版本?目前我仍停留在8.0.3中。啊,你说得对。我们有太复杂的反向代理配置,重写了头。我真丢脸。