【发布时间】:2018-05-05 07:00:23
【问题描述】:
我正在尝试通过我的 Spring Security 配置 XML 将 cache-control 响应标头配置为自定义值。不幸的是,我似乎只能禁用 XML 配置 as per the documentation 中的 cache-control 标头:
<http>
<headers defaults-disable="true">
<cache-control />
</headers>
</http>
似乎是这样,我尝试创建一个自定义 WebSecurityConfigurerAdapter:
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
System.out.println("******* SETTING CUSTOM CACHE-CONTROL....");
StaticHeadersWriter writer = new StaticHeadersWriter("Cache-Control", "2592000");
RequestMatcher resourcesMatcher = new AntPathRequestMatcher("/**/*");
HeaderWriter resourcesHeaderWriter = new DelegatingRequestMatcherHeaderWriter(resourcesMatcher, writer);
http.headers().cacheControl().disable().addHeaderWriter(resourcesHeaderWriter);
http.headers().disable();
}
}
不幸的是,尽管实际上最初调用了该类,但似乎配置实际上已被 XML 覆盖,因为 cache-control 响应标头似乎仍设置为默认值:
关于如何指定与 XML 文件本身类似的内容,最好能够匹配特定模式(例如 *.js)的任何想法?
谢谢!
【问题讨论】:
-
让我试一试——不过,让我问一下,有没有办法选择性地应用标题?我的主要目标是只修改 JS 文件的默认缓存控制。
-
你的意思是一些 ANT 模式?是的,您至少可以在 Java 配置中做到这一点。使用 XML 会更复杂但可能。
-
是的,ANT 模式...至于
headerXML 元素,我仍然看不到在headers下配置它的方法吗?列出的唯一属性已禁用:docs.spring.io/spring-security/site/docs/current/reference/html/… -
你能提供一个链接吗?我在那里发布的缓存控制链接实际上被列为 headers 标记的子元素,如下所示:docs.spring.io/spring-security/site/docs/current/reference/html/… -- 我错过了什么吗?