从我的Django应用程序,如何将用户重定向到somescheme://someurl.com?
为了给你一些上下文以防它有用,我有一个用Python / Django编写的工作oauth2服务器,我需要允许用户注册具有自定义URL方案的redirect_uris。此自定义网址方案用于handling the redirect within native apps。
我的第一反应是使用HttpResponseRedirect,但是这个URL有自定义方案而不是HTTP所以我猜这不是我想要的。提前感谢您提供任何建议。
编辑: 我试过这个,Django正确返回响应重定向而不会抛出错误,但浏览器不会重定向到此URL。我正在使用Chrome来测试它。
编辑2: HttpResponseRedirect在safari中运行良好。
答案 0 :(得分:17)
实际上不应该有效,因为出于安全原因,Django默认只允许重定向到http
,https
和ftp
:
https://www.djangoproject.com/weblog/2012/jul/30/security-releases-issued/
我遇到了与OAuth相同的问题并重定向到自定义方案
Django(在Apache上)在重定向到自定义方案时抛出500(django.core.exceptions.SuspiciousOperation
)。解决方案是创建自己的HttpResponseRedirect
子类或只执行:
location = < your redirect URL >
res = HttpResponse(location, status=302)
res['Location'] = location
return res
答案 1 :(得分:4)
类HttpResponseRedirect
构造函数的第一个参数是必需的 - 重定向到的路径。这可以是完全限定的URL(例如'http://www.yahoo.com/search/')或没有&gt;域的绝对路径(例如'/ search /')。有关其他可选构造函数参数,请参阅HttpResponse。注意&gt;这会返回HTTP状态代码302。
这是从这里来的: https://docs.djangoproject.com/en/dev/ref/request-response/
无论如何,它应该从我正在阅读的内容中发挥作用。