Apache 强制对 HTTPS 请求自动设置 Cache-Control: private

Apache 强制对 HTTPS 请求自动设置 Cache-Control: private

我正在尝试让浏览器缓存资源HTTPS。 我在用MD5 指纹识别方法允许长期缓存,并且这部分我已经正常工作了。

不起作用的是设置缓存控制Apache 中的标头。

我的配置常规的SSLvhost 包含:

ExpiresActive On
ExpiresByType text/css "now plus 1 year"

HTTP请求/测试.css生成标题:

Cache-Control: max-age=31536000
Content-Type: text/css
Date: Wed, 15 May 2013 10:33:01 GMT
Etag: "7e572-19-4dcbdc8c04529"
Expires: Thu, 15 May 2014 10:33:01 GMT
Last-Modified: Wed, 15 May 2013 08:46:21 GMT
Server: Apache/2.2.15 (Oracle)
Vary: Accept-Encoding,User-Agent

HTTPS对同一文件的请求产生标题:

Cache-Control: private, must-revalidate, no-cache, no-store
Content-Type: text/css
Date: Wed, 15 May 2013 10:33:58 GMT
Etag: "7e572-19-4dcbdc8c04529"
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Last-Modified: Wed, 15 May 2013 08:46:21 GMT
Server: Apache/2.2.15 (Oracle)
Vary: Accept-Encoding,User-Agent

顺便说一句,在ExpiresByType

Header unset Expires
Header unset Cache-Control

从 HTTP 中删除这些标头,但不是来自 HTTPS 请求。

此外,我已经验证我设置的任何其他标头都会被传递,但缓存相关的标头除外,例如缓存控制或者过期- 这些在某处被覆盖。

这是正常的 Apache 行为还是某些旨在确保安全的 Oracle 或 Red Hat 补丁?

能以某种方式关闭它吗?

系统信息:

OS: Oracle Linux 6.4 (RHEL 6.4 based)
Apache: 2.2.15 (from rpm)

答案1

使用Cache control: public directive启用Firefox 的 HTTPS 缓存

某些版本的 Firefox 要求Cache control: public设置此标头,以便将通过 SSL 发送的资源缓存在磁盘上,即使明确设置了其他缓存标头也是如此。虽然此标头通常用于启用代理服务器的缓存(如下所述),但代理无法缓存通过 HTTPS 发送的任何内容,因此为 HTTPS 资源设置此标头始终是安全的

来源:https://developers.google.com/speed/docs/best-practices/caching#LeverageBrowserCaching

相关内容