Recently I tried to use a SWFUpload plugin with PHP. I couldn’t make it work in Firefox 3, but in all other browsers it worked like a charm. I couldn’t stand the idea that this was the only time Firefox was the picky browser, so I decided to test it on another computer that also had Firefox 3.0.2 installed. On my laptop all browsers were working fine, including Firefox 3. So what was the problem?
Once more: NOD32 + WampServer. To be able to test it in the browser (hosting the Apache server), the only thing I had to do was replace:
http://localhost:8080/
with:
http://[my computer IP]:8080/

The reason is that NOD32’s web access protection filters HTTP traffic, and requests addressed to localhost get intercepted on the way to the local Apache server. Pointing the browser at the machine’s LAN IP instead bypasses the filter. NOD32 is a really nice antivirus — simple, light, efficient — but in many cases I’ve seen some really unexplained behaviors. See also Nod32 WampServer Fix.
This class of problem never went away. Antivirus web-protection modules still intercept requests to localhost and 127.0.0.1, and the usual symptoms are uploads, XHRs, or WebSockets against a local dev server failing in exactly one browser on exactly one machine. The fix, in order of preference: add an exclusion for the dev server’s port or URL in the AV’s web protection settings (the targeted approach from the NOD32/WampServer fix above), serve the dev site on a LAN IP or local hostname, or last resort bind plain HTTP on another port. The old trick of swapping localhost for the LAN IP still works too — it just trades one surprise for another, since session cookies and CORS settings keyed to localhost will now mismatch.
Keep that in mind!