Re: PHP 4.0 Bug #8017: PHP ignores "If-Modified-Since" headers
| From: | Jordan Russell | Date: | Wed, 29 Nov 2000 04:14:16 +0000 |
| Subject: | Re: PHP 4.0 Bug #8017: PHP ignores "If-Modified-Since" headers | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-39445@lists.php.net to get a copy of this message | ||
Hello again,
Header("Status: 304 Not Modified") does not work for me. All that did was
add a "Status" header to the regular 200 response:
HTTP/1.1 200 OK
Date: Wed, 29 Nov 2000 03:41:12 GMT
Server: Apache/1.3.14 (Unix) PHP/4.0.3pl1
X-Powered-By: PHP/4.0.3pl1
Status: 304 Not Modified
Connection: close
Content-Type: text/html
which obviously isn't the desired effect..
Again, I still think PHP should automatically handle If-Modified-Since
itself, by sending back a 304 response code and no content if the PHP script
sends out a Modified header which is less than or equal to
If-Modified-Since. As I've said, CGI scripts written in non-web languages
such as Perl or sh do this automatically (i.e. with *no* special coding at
all), so IMHO it only stands to reason that a high-level language like PHP
should too.
Jordan Russell
----- Original Message -----
From: "Frank M. Kromann" <fmk@swwwing.com>
To: "Jordan Russell" <jr@quo.to>
Cc: <php-dev@lists.php.net>
Sent: Tuesday, November 28, 2000 9:19 PM
Subject: Re: [PHP-DEV] PHP 4.0 Bug #8017: PHP ignores "If-Modified-Since"
headers
> Hi Jordan,
>
> The ETAG is returned in $HTTP_IF_NONE_MATCH and id send Header("Status:
304 Not Modified"); to the browser and terminates the script with an exit
command if data is not modified. That works fo me.
> This will also work if the browser is configured to check for new versions
on every visit. I might mention that we also uses header to set expiredate
back in time to force the browser to check on every visit, no mater the
browser settings.
>
> If the webserver did cache the page, how would you get new content
displayed in the situation where the script was untouched but data was
modified in the database. I still dont see this as a bug.
>
> - Frank
>
> >Hi,
> >
> >I understand that I could use an ETAG or manually parse the
> >If-Modified-Since header myself, but it seems like PHP should handle
> >If-Modified-Since itself. After all, a very simple shell script like the
one
> >I posted below handles it properly (i.e. returns 304 codes), and "sh"
isn't
> >even designed for HTTP like PHP is! It is for that reason I filed this
issue
> >as a bug report.
> >
> >If I have no other choice but to manually send back a 304 code myself,
what
> >is the proper way to do it? I tried:
> >
> >Header ("HTTP/1.0 304 Not Modified");
> >
> >but that sent back a 304 code which included a Content-Type header -- a
> >violation of the HTTP spec. (HTTP says 304 responses "must be returned
> >without any message-body".)
> >
> >Jordan Russell
> >
> >----- Original Message -----
> >From: "Frank M. Kromann" <fmk@swwwing.com>
> >To: <jr-php@quo.to>
> >Cc: <php-dev@lists.php.net>
> >Sent: Tuesday, November 28, 2000 8:42 PM
> >Subject: Re: [PHP-DEV] PHP 4.0 Bug #8017: PHP ignores "If-Modified-Since"
> >headers
> >
> >
> >> Hi All,
> >>
> >> I use "Last-Modified" and an ETAG header with my php scripts. I use the
> >ETAG header to check if data has been modified in the database, if not I
> >have the php script return a HTTP 304 header alowing the browser to use
the
> >page from cache.
> >> This works fine for me.
> >>
> >> I dont think anye webserver would be able to detect this for all php
> >scrpts and keep the contents in cache (dynamic web pages does not exist
on
> >the harddisk).
> >>
> >> - Frank
> >>
> >> >From: jr-php@quo.to
> >> >Operating system: Linux
> >> >PHP version: 4.0.3pl1
> >> >PHP Bug Type: Apache related
> >> >Bug description: PHP ignores "If-Modified-Since" headers
> >> >
> >> >PHP: 4.0.3p1
> >> >Apache: 1.3.14
> >> >Browser: IE 5.5 SP1
> >> >
> >> >Because I want my PHP pages to be cached, my PHP script sends out a
> >Last-Modified header (entire code follows):
> >> >
> >> ><?php
> >> >Header ("Last-Modified: Mon, 27 Nov 2000 00:00:00 GMT");
> >> >?>
> >> >Test...
> >> >
> >> >One would think that this would be enough to get a web browser to
cache
> >the page, but evidently it is not. Examining my web server's access log
> >shows that each time the page is subsequently requested (e.g. by pressing
> >Refresh), it sends back a "200 OK" response code instead of a "304 Not
> >Modified" as it should. In other words, the server is sending back a
fresh
> >copy of the page every time.
> >> >
> >> >However, if I do a similar thing using a CGI script, the server *does*
> >send back "304" codes as it should (entire code follows):
> >> >
> >> >#!/bin/sh
> >> >echo "Last-Modified: Mon, 27 Nov 2000 00:00:00 GMT"
> >> >echo "Content-Type: text/html"
> >> >echo ""
> >> >echo "Test..."
> >> >
> >> >In both cases, an "If-Modified-Since" header is being sent to the
server.
> >Yet the PHP script appears to ignore it completely and send a fresh page,
> >while the very simple CGI shell script doesn't.
> >> >
> >> >P.S. At the bottom of this are transcripts of the HTTP requests for
the
> >PHP & CGI scripts. Notice how PHP sends back a fresh page even though the
> >If-Modified-Since date is the same as the Last-Modified date.
> >> >
> >> >P.P.S. I just noticed that this problem affects PHP's own web site
too!
> >The page http://www.php.net/ returns a Last-Modified
> >header, but browsers
> >receive a fresh copy of the page every time since If-Modified-Since is
> >ignored.
> >> >
> >> >
> >> >--- PHP script ---
> >> >
> >> >GET /test.php HTTP/1.0
> >> >If-Modified-Since: Mon, 27 Nov 2000 00:00:00 GMT
> >> >
> >> >HTTP/1.1 200 OK
> >> >Date: Mon, 27 Nov 2000 20:41:29 GMT
> >> >Server: Apache/1.3.14 (Unix) PHP/4.0.3pl1
> >> >X-Powered-By: PHP/4.0.3pl1
> >> >Last-Modified: Mon, 27 Nov 2000 00:00:00 GMT
> >> >Connection: close
> >> >Content-Type: text/html
> >> >
> >> >Test...
> >> >
> >> >
> >> >--- CGI shell script ---
> >> >
> >> >GET /cgi-bin/test.cgi HTTP/1.0
> >> >If-Modified-Since: Mon, 27 Nov 2000 00:00:00 GMT
> >> >
> >> >HTTP/1.1 304 Not Modified
> >> >Date: Mon, 27 Nov 2000 20:41:46 GMT
> >> >Server: Apache/1.3.14 (Unix) PHP/4.0.3pl1
> >> >Connection: close
> >> >
> >> >
> >> >--
> >> >Edit Bug report at:
> >> >http://bugs.php.net/?id=8017&edit=1
> >> >
> >> >
> >> >
> >> >--
> >> >PHP Development Mailing List
> >> ><http://www.php.net/>
> >> >To unsubscribe, e-mail: php-dev-unsubscribe@lists.php.net
> >> >For additional commands, e-mail: php-dev-help@lists.php.net
> >> >To contact the list administrators, e-mail:
php-list-admin@lists.php.net
> >> >
> >> >
> >> >
> >>
> >>
> >>
> >
> >
> >
>
>
>
>
> --
> PHP Development Mailing List <http://www.php.net/>
> To unsubscribe, e-mail: php-dev-unsubscribe@lists.php.net
> For additional commands, e-mail: php-dev-help@lists.php.net
> To contact the list administrators, e-mail: php-list-admin@lists.php.net
>