#34537 [Opn->Fbk]: Last-Modified header + Status: 200 results in 200 OK without body
| From: | rasmus@php.net | Date: | Mon, 19 Sep 2005 00:40:10 +0000 |
| Subject: | #34537 [Opn->Fbk]: Last-Modified header + Status: 200 results in 200 OK without body | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-85217@lists.php.net to get a copy of this message | ||
ID: 34537
Updated by: rasmus@php.net
Reported By: alisencer at gmail dot com
-Status: Open
+Status: Feedback
Bug Type: CGI related
Operating System: FreeBSD
PHP Version: 5.0.5
New Comment:
Does the same thing happen under Apache1?
Previous Comments:
------------------------------------------------------------------------
[2005-09-19 01:58:36] alisencer at gmail dot com
Hi Sniper,
thanks for your quick reply. I think there's a misunderstatement. I
know HTTP headers and how they work.
Please re-read the bug-report.
I am setting 200 OK and sending a body.
Something along the way decides it should be a 304, but does NOT change
the status-code. Instead it silently drops the body of the response.
I don't know what this something along the way is - it might be PHP or
it might be Apache2. But I doubt that this would be expected
behaviour.
Thanks for your reconsideration and effort.
------------------------------------------------------------------------
[2005-09-18 22:25:07] sniper@php.net
Expected behaviour. Please read more about the headers at:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
------------------------------------------------------------------------
[2005-09-17 13:40:09] alisencer at gmail dot com
Description:
------------
This is with Apache2 (PHP as CGI). When setting a Last-Modified header,
apache/php automatically sets a 304 header and sends no body.
However if I additionally manually override the Status header with
header("Status: 200 OK");
The webserver responds with a 200 OK, however without any body. It also
keeps the HTTP-Connection open until the timeout.
Reproduce code:
---------------
<?php
header("Status: 200 OK");
header("Last-Modified: Fri, 26 Aug 2005 11:53:55 GMT");
echo "test";
?>
curl -D - -H 'If-Modified-Since: Sat, 17 Sep 2005 09:18:01 GMT'
http://url
Expected result:
----------------
==
HTTP/1.1 200 OK
Date: Sat, 17 Sep 2005 11:25:37 GMT
Last-Modified: Fri, 26 Aug 2005 11:53:55 GMT
test
==
Or alternatively:
==
HTTP/1.1 304 Not Modified
Date: Sat, 17 Sep 2005 11:26:16 GMT
==
Actual result:
--------------
HTTP/1.1 200 OK
Date: Sat, 17 Sep 2005 11:25:45 GMT
Server: Apache
(and then it hangs for a while, but no body is sent [checked with
Ethereal]).
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=34537&edit=1