|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2003-05-05 04:44 UTC] m at mlcastle dot net
If zlib.output_compression is on, then it (sensibly) sends a
Vary: Accept-Encoding
header to the browser. However, if the user's script has sent its own Vary: header, then that header will get clobbered by zlib's. Better solutions would be to either:
* let the user's header take preference, and caution the user to include Accept-Encoding in the custom one, or
* magically combine the user's header and the zlib one.
Refernece: RFC 2616 (HTTP/1.1 Spec), Section 14.44
Sample script:
<?php
ini_set('zlib.output_compression', 'on');
// do something with $_SERVER['HTTP_ACCEPT_LANGUAGE']
header('Vary: Accept-Language');
// output something
?>
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Oct 30 22:00:01 2025 UTC |
It seems we still (again?) have this in PHP 5.3 and 5.4. Tested with latest 5.3.19 and 5.4.9. Testcase: <?php header('Vary: X-Requested-With'); ob_start('ob_gzhandler'); echo 'Hello world.'; // As a result, we have wrong `Vary: Accept-Encoding`, // though we should have `Vary: X-Requested-With,Accept-Encoding`. For example, when using Ajax, it's quite typical and handy for Ajax and non-Ajax responses to have exactly same URL and differ in just `X-Requested-With` request-header. To make it possible for user agents to cache such responses separately (IE9 at least uses common cache for Ajax and non-Ajax responses by default), `Vary: X-Requested-With` header should be set, but it's then wrongly _overrided_ (instead of being appended) with `Vary: Accept-Encoding` header set by `ob_start('ob_gzhandler')`. Currently, we are forced to add headers with `Header add` of Apache web-server instead of PHP itself to workaround this bug of PHP. Thanks.