gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:44:17 24 4
gpt4 key购买 nike

我正在使用以下中间件片段:

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 实例,是否有可靠的方法来查找此信息?

解决方案

添加以下检查:

if request.get_host() in redirect or not redirect.startswith('http'):
redirect = '%s&ajaxRedirect=1' % redirect

最佳答案

不确定这是否是最佳选择,但您可以比较 request.get_host()response['Location'] (或 django dev 版本中的 response.url)。

希望有帮助。

关于python - 如何验证 HttpResponseRedirect 是否指向外部站点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16645855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com