My complete() callback looks like this: complete: function(res, status) { if ( status == "success" || status == "notmodified" ) { node.replaceWith(res.responseText); } else { // Error handling here } }
The login page gets inserted into the DOM, so I know the client must be chasing the redirect and I must be getting either "success" or "notmodified" in status. Looking at jQuery source, this comes from xhr.status (in function httpSuccess) which gives "success" for 2xx or 304, so any 3xx redirect code must have been followed and lost. I can check for xhr? at the server side, and if so, instead of redirecting to the login page I can send back some sort of uncommon HTTP error which can be detected, e.g. 410 Gone, or a custom HTTP header. I'll have a play along those lines. Cheers, Brian.