当我设置过滤器 bean 时插入了重复的 Cache-Control header
Duplicate Cache-Control header inserted when I setup filter bean
我设置了一个过滤器 bean 来插入和重置 Cache-Control
headers。这工作正常,除了在过滤器之后的一点点,额外的 Cache-Control
headers 被插入。
我正在与 Spring Boot
合作。
关于可能导致问题的任何解决方案?
@Component
public class CacheControlFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {}
@Override
public void destroy() {}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
Calendar expires = Calendar.getInstance();
expires.add(Calendar.HOUR, 24);
// Intercept response header
HttpServletResponse resp = (HttpServletResponse) response;
resp.setDateHeader("Expires", expires.getTimeInMillis());
resp.setHeader("Cache-Control", "max-age=2048");
chain.doFilter(request, resp);
}
}
查看副本 Cache-Control
headers:
HTTP/1.1 200 OK
...
Cache-Control: max-age=2048
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 26 Sep 2014 18:21:30 GMT
Expires: 0
Pragma: no-cache
Content-Type: image/png
...
您在使用 Spring-security 吗?
Spring 安全性也会自动添加它们,您可以在您的配置中禁用它们,如下所示:
class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override protected void configure(HttpSecurity http) throws Exception {
//... Rest of config
http.headers().disable()
您还可以根据需要将特定 headers 配置为 on/off(请参阅该 API 文档中的其他方法,例如 cacheControl()
等)
我设置了一个过滤器 bean 来插入和重置 Cache-Control
headers。这工作正常,除了在过滤器之后的一点点,额外的 Cache-Control
headers 被插入。
我正在与 Spring Boot
合作。
关于可能导致问题的任何解决方案?
@Component
public class CacheControlFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {}
@Override
public void destroy() {}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
Calendar expires = Calendar.getInstance();
expires.add(Calendar.HOUR, 24);
// Intercept response header
HttpServletResponse resp = (HttpServletResponse) response;
resp.setDateHeader("Expires", expires.getTimeInMillis());
resp.setHeader("Cache-Control", "max-age=2048");
chain.doFilter(request, resp);
}
}
查看副本 Cache-Control
headers:
HTTP/1.1 200 OK
...
Cache-Control: max-age=2048
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 26 Sep 2014 18:21:30 GMT
Expires: 0
Pragma: no-cache
Content-Type: image/png
...
您在使用 Spring-security 吗?
Spring 安全性也会自动添加它们,您可以在您的配置中禁用它们,如下所示:
class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override protected void configure(HttpSecurity http) throws Exception {
//... Rest of config
http.headers().disable()
您还可以根据需要将特定 headers 配置为 on/off(请参阅该 API 文档中的其他方法,例如 cacheControl()
等)