Subject: | HTTP::Headers If-Modified-Since and IE6 |
Date: | Thu, 8 Nov 2007 18:39:38 +0100 |
To: | bug-libwww-perl [...] rt.cpan.org |
From: | Simon Waters <simonw [...] zynet.net> |
IE6 appends "; length = NNNN" to the HTTP date in "If-Modified-Since" headers.
This is not handled gracefully by the "if_modified_since" function of
HTTP::Headers v1.64.
It appears to be an RFC infringement by IE6, possibly predating the current
RFC. A quick search suggests Netscape (Navigator - presumably?) did this
once?!
The fix is trivial, so I'm guessing either no one noticed, or it is a policy
not to fix it, or there is some other reason.
Revealed for us by Catalyst::Plugin::Static.pm serve_static_file subroutine,
which stats the file to the served, checks the If-Modified-Since header
exists, and then tries to use "if_modified_since" in a comparison (without
first checking it returned a value). Resulting in excess shipping of files
for IE6, for people with Perl webservers for static content that used
HTTP::Headers and didn't work around this.