Firefox 为什么expires标头响应设置为未来日期,最大期限为0?

Firefox 为什么expires标头响应设置为未来日期,最大期限为0?,firefox,http-headers,google-cloud-storage,Firefox,Http Headers,Google Cloud Storage,我注意到谷歌云存储发送的HTTP响应头中expires属性有一个奇怪的行为。 虽然缓存控件是使用元数据中的文件的最大年龄:0定义的(如屏幕截图中所示),但expires属性设置为未来一年的日期(第二个屏幕截图)。为什么这个日期定在未来 这种行为的问题在于,最新的Firefox版本(v.77和v.78)似乎解释了expires属性,尽管文档中已经说明,如果定义了max age,则不会解释expires属性(请参阅)。对于使用HLS的livestream视频播放,此行为会导致在短时间后进行缓冲,

我注意到谷歌云存储发送的HTTP响应头中expires属性有一个奇怪的行为。 虽然缓存控件是使用元数据中的文件的最大年龄:0定义的(如屏幕截图中所示),但expires属性设置为未来一年的日期(第二个屏幕截图)。为什么这个日期定在未来

这种行为的问题在于,最新的Firefox版本(v.77和v.78)似乎解释了expires属性,尽管文档中已经说明,如果定义了max age,则不会解释expires属性(请参阅)。对于使用HLS的livestream视频播放,此行为会导致在短时间后进行缓冲,因为清单由浏览器缓存。上已经有错误报告mozilla@bugzilla关于这种行为(见)


更新

进一步的调查表明,Firefox在本例中不是问题所在,他们只是更改了标题属性的解释,并坚持使用自v.77,其中“=”被定义为所需字符,而不是“:”。显然,其他浏览器(和FF到v.76)也使用“:”正确解释它

因此,在我们的情况下,这个问题需要在服务内部解决,将文件写入我们的地面军事系统。

很难说谷歌云存储为什么要这样做。也许
过期
是默认值,而
缓存控件
用于自定义用户设置?更有可能的是,这只是一个疏忽

重要的一点是,这种行为是允许的,并且由于
max age的限制,对于兼容浏览器来说是无害的:

如果响应包含带有
max age
指令的
Cache Control
字段(第5.2.2.8节),则收件人必须忽略
Expires
字段

所以真正的问题是Firefox不符合HTTP规范。希望很快就能修好