I have this nasty habit of being completely dismissive of HTTP error handling by
not handling 404 errors and setting the ErrorDocument in my .htaccess file to
point to / (e.g. ErrorDocument 404 /). For the most part, this has never been an
issue shy of needing to explain why that missing page happened to show the main
page. That is, until some recent issues with
updatemuch.com.
The site was having a bizarre issue where the PHP session kept being reset which
rendered the site completely useless, but only in Chrome / Chromium. I had
thought that the issue stemmed from the Services Twitter PEAR
class that I was using when I originally
built the site. A recent upgrade of the class proved to be buggy enough (was
throwing errors in E_STRICT) to get me to migrate to
abraham’s Twitter
OAuth class.
Fast forward to today. The site was rebuilt using the new Twitter class, some
enhancements were made and the site deployed. Oh wait, I forgot to test in
Chromium… oh shit, same issue in Chromium. This is when I got to actually
investigating the issue. Keep in mind, the home page of the site destroys the
session, so I assumed something was hitting the home page after authenticating
with Twitter. A bit of time troubleshooting later, I determined that it was in
fact the home page being loaded, but no clue where / when it was happening.
At this point I started digging around my Apache logs to see what was being
loaded. Between Firefox and Chromium, there was one major difference, Chromium
was attempting to load favicon.ico which was not present. Wait, what?! It was
forcefully trying to load the favicon? Why yes, yes it was, and because the file
was not present, a 404 was hit and thusly, the home page loaded. This all
happened outside of the flow of the browser loading the page. No FireBug
entries, no indication that there was an error.
Yeah, at least the updates to the site brought some improvements aside from
fixing this bug. In the future, I will also be including a favicon.ico file to
keep my logs from being filled up with 404 errors. I haven’t tried it, but I’m
curious if this is more of an issue with WebKit browsers than with Chrome /
Chromium directly.