|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.