Etags和last-modified在https SSL上如何使用?

9
能否在安全的HTTPS连接上使用HTTP缓存进行有条件的GET请求?我已经让缓存在非安全的HTTP上运行,但是当我切换到HTTPS时,浏览器停止发送if-none-match和if-modified-since头,因此缓存被破坏了。我尝试了各种Cache-Control设置,如public、max-age=3600等等,但都没有效果。
这在Safari和Chrome中都会发生,所以我认为SSL可能会破坏它。SSL不允许缓存吗?
并且,只是为了明确,服务器确实正确地设置了etag和last-modified头,但是根据Chrome开发人员工具,浏览器没有在请求中发送if-none-match和if-modified-since。
感谢您的帮助。
1个回答

15

搞定了!原来您需要拥有一份可信任的证书。我曾经使用我的自签名测试证书用于SSL HTTPS,但是添加到“钥匙串(keychain)”并将其变为绿色后缓存才生效。


刚刚注意到同样的事情;Chrome没有将ETag发送给服务器以获取一些资源。我正在测试网站上使用我的生产SSL证书,所以它上面有一个大十字。我需要添加一个/ etc / hosts条目,并尝试使用生产域名。 - TomWardrop
1
我已将自签名证书添加到Chrome中,现在我获得了绿色的挂锁,但是在Chrome 33中仍然没有If-Modified-Since(在FF27中正常工作) - 自签名证书仍会显示消息:“但没有公共审计记录” - 看起来Chrome在任何SSL错误的情况下都不会缓存:https://code.google.com/p/chromium/issues/detail?id=110649 - Charl Botha
取消之前的话...我刚刚重新启动了我的Chrome 33,现在一切都好了!所以绿色的挂锁,即使是“没有公共审计记录”,也没问题。 - Charl Botha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接