覆盖 Apache 中代理内容的 Expires 标头

覆盖 Apache 中代理内容的 Expires 标头

我使用 Apache 提供已包含 Expires 标头的代理内容。使用 mod_expires 的 ExpireDefault 覆盖已存在的 Expires 标头不起作用,旧标头保持不变。

还有其他方法可以覆盖 Expires 标头吗?我尝试使用 mod_headers,但似乎无法在那里进行日期计算。我也必须覆盖 Expires 标头,我不能为此使用带有 max-age 的 Cache-Control。

问候,Jochen

答案1

根据 HTTP 1.1 规范:

透明代理不得修改响应中的以下任何字段:

  - Expires

但如果这些字段尚不存在,它可以添加其中任何一个。如果添加了 Expires 标头,则必须为其指定一个与该响应中的 Date 标头相同的字段值。

(引自W3.org 上的规范

您可能可以使用其他一些 hack 来实现这一点。中间代理(例如 WebScarab,我不会在任何生产环境中使用它)可能允许您拦截和修改任何标头,但符合标准的 HTTP 代理(例如 Apache)不允许您覆盖 Expires 标头。您只能在原始服务器中尚未添加它时添加它,但我猜想规范中对添加 Expires 标头的限制不会实现您想要的效果。

相关内容