【问题标题】:ETag header not being sent from PHPETag 标头未从 PHP 发送
【发布时间】:2011-07-20 20:15:53
【问题描述】:

我正在运行 PHP 5.3.2 和 Apache 2.2.14。使用header(),如果我发送“ETagx”,我会在响应中得到标题,但如果我发送“ETag”,正确的标题名称,我什么也得不到。

header('ETagx: "33653a-4831d8249af80"')

工作,而

header('ETag: "33653a-4831d8249af80"')

没有。 php.ini 或任何可能影响此的 Apache 配置文件中是否有配置选项?

【问题讨论】:

  • 如果你将replace参数设置为true,那么它可以工作吗? header('ETag: awefawefawef', true)

标签: php apache etag


【解决方案1】:

刚刚在 PHP 5.3 和 Apache 2.4 上进行了测试,它对我有用。

确保 Apache 不会像这样取消设置您的 Etag:

<IfModule mod_headers.c>
  Header unset ETag
</IfModule>

FileETag None

【讨论】:

  • 我想用 PHP 5.3 和 APACHE 2.0 发送 ETAG。当我检查 apache_request_headers() 时,我无法获得“If-Modified-Since”和“If-Modified-Since”标头。是否需要任何配置?一个附加信息,我使用 https 而不是 http。知道可能是什么问题。
  • @MANISHZOPE apache_request_headers() 将报告 If-None-MatchIf-Modified-Since 标头,前提是它们存在于请求中。这些显然只有在您之前发送过相应的ETagLast-Modified 标头时才会设置。并且您之前没有发送过 Cache-Control: no-store 标头 - 这将阻止缓存并且浏览器甚至不会打扰发送这些标头,因为它需要完整的响应。 stackoverflow.com/questions/15900548/…
【解决方案2】:

当我在启用“无缓存”选项的情况下启用Charles HTTP Proxy 时复制了这种情况 - HTTP 代理正在删除 ETag 和其他与缓存相关的标头。如果使用代理查看标头,请确保为特定请求启用缓存。

【讨论】:

    猜你喜欢
    • 2016-08-03
    • 1970-01-01
    • 2016-10-28
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 2018-04-29
    相关资源
    最近更新 更多