当使用internet explorer时,我有一个问题,当刷新一个页面,使一些图标消失,一些字体无法正常加载。经过一番研究,我发现这很可能与 Cache-Control
收割台的 no-store
我不久前添加的指令,它将包含在默认http响应中。为了解决这个问题,我正在尝试重新配置我的默认响应,使静态资源具有以下缓存控制头:
Cache-Control: no-cache, max-age=0, must-revalidate
而不是非静态资源的默认值:
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
我有一个spring引导应用程序,其中的cache-control头针对静态资源进行了如下配置:
@Configuration
public class MvcAngularRouteConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**/*.js", "/**/*.css", "/**/*.ttf", "/**/*.woff", "/**/*.woff2", "/**/*.eot",
"/**/*.svg", "/**/*.png")
.addResourceLocations("classpath:/public/", "classpath:/public/assets", "classpath:/assets/")
.setCacheControl(CacheControl.noCache().mustRevalidate()).setCachePeriod(0)
.resourceChain(true)
.addResolver(new PathResourceResolver());
registry.addResourceHandler("/**/*")
.addResourceLocations("classpath:/public/")
.resourceChain(true)
.addResolver(new PathResourceResolver() {
@Override
protected Resource getResource(String resourcePath,
Resource location) throws IOException {
Resource requestedResource = location.createRelative(resourcePath);
return requestedResource.exists() && requestedResource.isReadable() ? requestedResource
: new ClassPathResource("/public/index.html");
}
});
}
}
当我使用google chrome收到响应时,我在响应中得到以下安全标头:
Cache-Control: no-cache, must-revalidate
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
使用internet explorer 11和mozilla firefox,我可以得到以下信息:
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
我想了解的是:
为什么 Cache-Control
在IE浏览器中,我的静态资源响应中完全缺少标题,而在google chrome中,没有缺少标题?
为什么 max-age=0
命令中缺少指令 Cache-Control
使用google chrome时响应中的标题?
如何配置应用程序以使 Cache-Control
标头配置为 Cache-Control: no-cache, max-age=0, must-revalidate
对于所有静态资源?
仅供参考,如果我删除静态资源的资源处理程序注册表并保留spring安全默认值,我会得到一个 Cache-Control: no-cache, no-store, max-age=0, must-revalidate
在所有请求的响应中。
暂无答案!
目前还没有任何答案,快来回答吧!