Tomcat和缓存控制:私有和过期:<date in =“”past =“”> - 这是设置在哪里?</date>

时间:2015-03-06 21:42:09

标签: tomcat caching ssl header

在所有请求的响应头中,有一个cache-control:private,以及设置的Expires。我想知道这是设置的位置。

我有以下设置: 1. F5负载平衡到托管Tomcat 7.0.42.0的两台CentOS 6.4服务器 2.我为图像,css和js文件设置了ExpiresFilter。但是,这些类型并不总是缓存。

有两种环境,但只有一种环境显示响应标头Cache-Control private,以及Expires Wed,1969年12月31日19:00:00 EST。另一个环境没有表明这一点。

我已经完成了Tomcat的server.xml,web.xml和context.xml的差异,并没有太大的区别。

谷歌搜索导致一些与SSL配置相关的帖子,但我无法确定究竟是什么问题。

具有缓存控制的响应标头,并在过去过期:

    Cache-Control   private
    Content-Length  0
    Date    Fri, 06 Mar 2015 16:08:16 GMT
    Expires Wed, 31 Dec 1969 19:00:00 EST
    Location    https://myhost.com/mypage
    Response    HTTP/1.1 302 Found
    Server  Apache-Coyote/1.1

2 个答案:

答案 0 :(得分:2)

我有完全相同的问题。我的tomcat安装在conf文件夹中有自定义[web.xml]和[conf.xml]文件,以提供HTTPS连接。就我而言,问题在于[conf.xml]文件中的HTTPS安全性约束:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Protected Context</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

此约束强制客户端始终使用HTTPS,即使打开了端口80也是如此。从web.xml中删除此约束后,缓存开始工作(“cache-control”标头带有“max-age”,“expires”带有正确的日期)。

答案 1 :(得分:0)

找到解决问题的方法,但不是确切原因。

我在同一主机上安装了一个新的tomcat实例,但在另一个目录中,这解决了标题'Expires Wed,1969年12月31日19:00:00 EST'和'Cache-Control private'。还复制了来自同一主机的先前Tomcat安装的tomcat-users.xml,server.xml和web.xml。

我怀疑在导致问题的原始安装上删除Apache Web Server之后的某处有一些剩余配置。