Web浏览器是否会在https协议下缓存内容?

250

请求通过 https 提交的内容是否仍会被 Web 浏览器缓存,或者它们认为这是不安全的行为?如果是这种情况,是否有任何方法告诉它们可以缓存?


是的,浏览器会缓存HTTPS内容,请查看此链接http://neopatel.blogspot.com/2010/02/firefox3-and-caching-https-content.html。 - Kalpesh Patel
1
@KalpeshPatel,这取决于用户的设置。有些用户已将缓存对于所有HTTPS页面禁用 http://blogs.msdn.com/b/ieinternals/archive/2010/04/21/internet-explorer-may-bypass-cache-for-cross-domain-https-content.aspx - Pacerier
3个回答

193

截至2010年,所有现代的、比较新的浏览器默认缓存HTTPS内容,除非明确禁止。

不需要设置cache-control:public即可实现这一点。

来源:ChromeIEFirefox


6
看起来,总的趋势是允许HTTPS对象的缓存;通常情况下这是一件好事,因为如果开发人员认为某些对象涉及隐私,他们应该告诉浏览器不要缓存这些对象,而对于那些非隐私敏感的对象(例如图片、CSS),允许浏览器进行缓存可以提高性能,特别是在HTTPS上。谢谢。 - MarkR
2
自动缓存HTTPS资源而不使用“cache-control:public”是否符合RFC标准? - Pacerier
@Pacerier 浏览器将RFC字面意思解释为“请求评论”。RFC经常更改以反映浏览器上已有的内容。 - gcb

136

默认情况下,Web浏览器在HTTPS上的缓存行为应该与HTTP相同,除非通过接收到的HTTP Headers明确告知不同。

此链接是有关在HTTP标头中设置缓存设置的良好介绍。

有没有办法告诉它们可以缓存?

这可以通过将Cache-Control标头中的max-age值设置为非零值来实现,例如:

Cache-Control: max-age=3600

将告诉浏览器该页面可以缓存3600秒(1小时)。


12
我不确定我们是否在谈论同一个问题。我们是在讨论HTTPS内容是否会被默认缓存,还是在假定某些HTTP响应标头的情况下进行缓存?您从Mark Nottingham链接的Web缓存教程实际上表明,安全(即HTTPS)或经过身份验证的内容将不会被缓存,除非缓存控制标头指示它是公共内容。 - Edward Shtern
2
偶然发现一篇不错的文章:http://blog.httpwatch.com/2011/01/28/top-7-myths-about-https/。 - roberkules
1
Firefox几年前就移除了Cache-Control:public的要求。 - GreenReaper
1
这个语句“Web浏览器应该缓存HTTPS内容”对我来说是错误的。为什么他们应该这样做?此外,请检查下面来自Chromium团队的人的评论:“https://code.google.com/p/chromium/issues/detail?id=110649#c6”他说:“实际上没有任何东西被缓存(在持久缓存中)”。 - Teoman shipahi
@Teomanshipahi:“为什么他们应该这样做?”- 因为它们符合HTTP标准。 “他说'实际上没有任何东西被缓存(在持久缓存中)'”- 这个评论是指那个事件,而不是一般的浏览器。 - a better oliver
显示剩余3条评论

0

默认情况下,Https已被缓存。这由全局设置管理,不能被应用程序定义的缓存指令覆盖。要覆盖全局设置,请在控制面板中选择Internet选项小程序,然后转到高级选项卡。在“安全”部分下勾选“不保存加密页面到磁盘”框,但仅使用HTTPS不会影响IE是否决定缓存资源。

WinINet仅缓存HTTP和FTP响应,而不是HTTPS响应。 https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa383928(v=vs.85).aspx


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