Java 使用自定义缓存控制头的Tomcat http到https重定向
我们在tomcat中部署了一个spring引导应用程序。我们希望tomcat将http请求重定向到https。但是我们想禁用tomcat,在默认情况下将“缓存控制:私有”添加到所有响应头中 对于RESTAPI请求,我们希望SpringBoot添加默认缓存头Java 使用自定义缓存控制头的Tomcat http到https重定向,java,spring,tomcat,spring-boot,tomcat8,Java,Spring,Tomcat,Spring Boot,Tomcat8,我们在tomcat中部署了一个spring引导应用程序。我们希望tomcat将http请求重定向到https。但是我们想禁用tomcat,在默认情况下将“缓存控制:私有”添加到所有响应头中 对于RESTAPI请求,我们希望SpringBoot添加默认缓存头 Cache-Control:no-cache, no-store, max-age=0, must-revalidate Pragma:no-cache Expires:0 但从tomcat来看,它是 Cache-Control:priva
Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Pragma:no-cache
Expires:0
但从tomcat来看,它是
Cache-Control:private
Cache-Control:private
Expires:Wed, 31 Dec 1969 19:00:00 EST
Expires:Wed, 31 Dec 1969 19:00:00 EST
似乎“Expires”标头将提供相同的无缓存效果。但我想知道是否有办法阻止tomcat添加缓存头。对于静态文件,标题也是“private,max age=2592000,public”,而不是“max age=2592000,public”。下面是为静态文件添加自定义缓存头的tomcat配置和代码
server.xml
...
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="443"/>
....
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" secure="true" scheme="https" compression="on"
sslProtocol="TLSv1.2" sslEnabledProtocols="TLSv1.2" sslCipherSuite="SHA1/SHA2"
acceptCount="100" clientAuth="false" disableUploadTimeout="true"
keystoreFile="mycertificate" keystorePass="mypassword" server="Server">
在prod中,我们在IIS上运行了azure负载平衡器。对于静态文件,这删除了“缓存控制:私有”,因此文件被正确缓存。在tomcat中还没有找到任何方法来实现这一点。在prod中,我们在IIS上运行了azure负载平衡器。对于静态文件,这删除了“缓存控制:私有”,因此文件被正确缓存。在tomcat中还没有找到任何方法来实现同样的效果。
...
<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>
...
@Configuration
public class LocaleConfiguration extends WebMvcConfigurerAdapter{
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/content/**")
.addResourceLocations("/content/")
.setCacheControl(CacheControl.maxAge(30, TimeUnit.DAYS).cachePublic());
}
}