Java tomcat ExpiresFilter不工作
下面是我的webapp的web.xml中的一个片段Java tomcat ExpiresFilter不工作,java,tomcat,Java,Tomcat,下面是我的webapp的web.xml中的一个片段 <filter> <filter-name>ExpiresFilter</filter-name> <filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class> <init-param> <param-name>ExpiresByType text/cs
<filter>
<filter-name>ExpiresFilter</filter-name>
<filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class>
<init-param>
<param-name>ExpiresByType text/css</param-name>
<param-value>access plus 3 months</param-value>
</init-param>
<init-param>
<param-name>ExpiresByType text/html</param-name>
<param-value>access plus 3 months</param-value>
</init-param>
<init-param>
<param-name>ExpiresByType application/javascript</param-name>
<param-value>access plus 3 months</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ExpiresFilter</filter-name>
<url-pattern>/css/*</url-pattern>
<url-pattern>/dist/*</url-pattern>
<url-pattern>/lib/*</url-pattern>
<url-pattern>/partials/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
过期过滤器
org.apache.catalina.filters.ExpiresFilter
ExpiresByType文本/css
访问加上3个月
ExpiresByType文本/html
访问加上3个月
ExpiresByType应用程序/javascript
访问加上3个月
过期过滤器
/css/*
/距离/*
/解放党/*
/分部/*
要求
将logging.properties设置为更精细时
2015年11:51:35 AM org.apache.catalina.filters.ExpiresFilter
isEligibleToExpirationHeaderGeneration罚款:请求
响应状态为“200”的“/kuku/dist/js/vendor.js.map”
内容类型“null”,过期标头已定义
我在tomcat的conf目录中搜索
grep-r过期配置
什么也没找到
在哪里可以设置过期标头?我不知道它是否会有帮助,但实际上有两个条件可以让您获得该日志消息:
- 如果响应已经有“Expires”头
- 如果响应具有“缓存控制”标题,该标题指定了“最大年龄”属性
<security-constraint>
<web-resource-collection>
<web-resource-name>All</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>kuku<role-name>
</auth-constraint>
<user-data-constraint>
<!-- transport-guarantee can be CONFIDENTIAL, INTEGRAL, or NONE -->
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
<security-role>
<role-name>kuku</role-name>
</security-role>
全部的
/*
得到
邮递
但是最好不要使用这种身份验证方案,如Stephen-C所述,org.apache.catalina.filters.ExpiresFilter
如果已经设置了Expires
或缓存控制:max age
头,则将无法工作
这个答案是为那些喜欢解决这个问题的人以及那些真正想了解这个问题的人提供一个解决办法
以下是一个解决方法:
公共类MyExpiresFilter扩展了org.apache.catalina.filters.ExpiresFilter{
@凌驾
受保护布尔值isEligibleToExpirationHeaderGeneration(
HttpServletRequest请求,
XHttpServletResponse(响应){
返回true;
}
}
并使用此类更新您的web.xml
MyExpiresFilter
org.apache.catalina.filters.ExpiresFilter
并确保您的war包含此编译代码或web上下文在类路径中包含此类。我知道这是一个老问题,但由于我最近一直在努力解决这个问题,下面是一些更多信息:
“问题”出现在org.apache.catalina.authenticator.AuthenticatorBase
中,它为安全资源设置了Expires
头(这很有意义)。
参见示例(我只检查了Tomcat 7和8,但这可能无处不在):
如果存在Expires
标题,则ExpiresFilter
不会设置标题
在我的例子中,我想更改静态资源的缓存头,所以我求助于meta-HTML标记,更多信息在中,我尝试朝这个方向前进。有没有一种方法可以从入口点开始获取请求生命周期的日志,并查看链中每个部分的输入和输出?问题在于基本的认证器阀