class FixFirefoxMissingAJAXRedirectHeadersMiddleware(object):
    key = 'FixFirefoxMissingAJAXRedirectHeadersMiddleware'
    
    def process_request(self, request):
        if not request.is_ajax() and request.path == request.session.get(self.key, None):
            setattr(request, 'is_ajax', lambda: True)
            
    def process_response(self, request, response):
        if request.is_ajax() and 300 <= response.status_code < 400:
            request.session[self.key] = response['Location']
        else:
            if self.key in request.session:
                del request.session[self.key]
        return response