Django 1.4 - 重定向到非HTTP URL

14 投票
1 回答
5081 浏览
提问于 2025-04-17 13:54

我们有一个视图,它会重定向到一个非HTTP的链接,这个功能是在一个iOS应用中使用的。但是自从我们升级到Django1.4后,当执行这个重定向的代码时,程序就崩溃了。崩溃的提示是:

在 /myyrlscheme/ 发生了可疑操作

不安全的重定向到链接 scheme appdev:

以下是相关的代码:

if acode and acode.has_key('access_token'):
    if DOMAIN == 'dev.mywebsite.com':
        return HttpResponseRedirect('appdev://fbconnect?token=%s'%(acode['access_token']))
    else:
        return HttpResponseRedirect('app://fbconnect?token=%s'%(acode['access_token']))

我能理解为什么会崩溃,因为 HttpResponseRedirect 这个函数是期待一个 HTTP(s) 的链接格式。那么我该怎么告诉Django,这个链接是安全的,可以直接重定向呢?

1 个回答

21

我觉得你需要一个自定义的响应对象,可以考虑以下内容:

response = HttpResponse("", status=302)
response['Location'] = "appdev://..."
return response

撰写回答