blog
MooTools Depender, Safari, etags and 412 Precondition Failed
/**
* This replaces the default MooTools more Depender.request function to use
* HTTP "get" rather than "post".
*
* When sending requests for files via the depender, I was finding that Safari
* wasn't getting and re-evaluating them the second time I visited the page.
* This was because an etag was sent with each script.
*
* Safari responds to etags properly and adds "If-None-Match" and
* "If-Modified-Since" headers to another request for the same file. This makes
* Apache respond with a 412 status (Precondition Failed) as it should do for
* "post" requests (according to RFC 2616).
*
* Unfortunately Safari doesn't then deal with the 412 as it does with a 304
* (Not Modified). It doesn't grab what it has in the cache and put it in the
* response, it gives you nothing.
*
* For "get" requests, Apache has to respond with a 304, or 200 or whatever, but
* not 412. So we change the request method so we don't have to deal with 412.
*/
Depender.request = function(url, callback){
new Request.JSON({
url: url,
secure: false,
onSuccess: callback,
method:'get'
}).send();
};
Tags: 412, Apache, Cache, Caching, Depender, etag, GET, If-Modified-Since, If-None-Match, MooTools, POST, Precondition Failed, Request, Request.JSON, RFC 2616, Safari
This entry was posted on 2009.12.04 at 17:19 and is filed under Grinds My Gears. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Leave a Reply
archives
- July 2010
- May 2010
- February 2010
- January 2010
- December 2009
- December 2008
- October 2008
- August 2008
- May 2008
categories
- Blog (1)
- Grinds My Gears (5)
- Hosting (2)
- JavaScript (1)
- PHP (1)
- Sports (1)
- SQL (1)