2011-07-20 70 views
1

我正在運行PHP 5.3.2和Apache 2.2.14。使用header(),如果我發送「ETagx」,我在響應中獲得標題,但是如果我發送「ETag」,正確的標題名稱,我什麼都沒有。沒有從PHP發送ETag頭文件

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

作品,而

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

沒有。在php.ini中是否有配置選項,或者在任何可能影響此配置文件的Apache配置文件中?

+1

如果將replace參數設置爲「true」,那麼它是否工作? 'header('ETag:awefawefawef',true)' – Brad

+0

不,不幸的不是。 – skyler

回答

1

剛剛在PHP 5.3和Apache 2.4上測試過,它對我很有用。

確保阿帕奇不會取消設置你的Etag是這樣的:

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

FileETag None 
+1

我想發送帶有PHP 5.3和APACHE 2.0的ETAGS。當我檢查apache_request_headers()時,我無法獲得「If-Modified-Since」和「If-Modified-Since」頭文件。是否需要配置?另外一個la信息,我使用https替代http。任何想法可能是一個問題。 –

+1

@MANISHZOPE'apache_request_headers()'會報告'If-None-Match'和'If-Modified-Since'頭,並提供它們存在於請求中。如果你之前已經發送了相應的'ETag'和'Last-Modified'頭文件,這些顯然將被設置。並且您之前沒有發送過「Cache-Control:no-store」頭文件 - 這會阻止緩存,並且瀏覽器甚至不會打擾發送這些頭文件,因爲它需要完整的響應。 http://stackoverflow.com/questions/15900548/why-browser-does-not-send-if-none-match-header – MrWhite

1

我重複了這一情況時,我有Charles HTTP Proxy主動配合「無緩存」選項啓用 - HTTP代理被刪除ETag的和其他與緩存相關的頭文件。如果使用代理來查看標題,請確保爲特定請求啓用了緩存。