如何验证HttpResponseRedirect是否指向外部站点?

2024-10-03 06:28:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用以下中间件片段:

class AjaxRedirect(object):
    """
    Instead of returning a 302 for AJAX requests, instead we should return a 200 with a location
    to redirect to so jQuery can forward the user as needed.
    """

    def process_response(self, request, response):
        if request.is_ajax():
            if type(response) == HttpResponseRedirect:
                logger.warn(response.__dict__)
                redirect = '%s&ajaxRedirect=1' % response['Location']
                logger.info('Returned AjaxRedirect to %s' % redirect)
                return HttpResponse(
                    json.dumps(
                        {'redirect': redirect},
                        indent=4,
                        sort_keys=False),
                    content_type='application/json; charset=UTF-8');
        return response

但是,如果重定向到一个外部站点,我想放弃查询字符串参数。如果我同时拥有HttpRequestHttpResponseRedirect实例,有没有可靠的方法来查找这些信息?在

解决方案

添加以下检查:

^{pr2}$

Tags: 中间件tojsonreturnifobjectresponserequest