Java 使用自定义缓存控制头的Tomcat http到https重定向

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

我们在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: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());
    }
}