6

从我的 Django 应用程序中,如何将用户重定向到 somescheme://someurl.com?

为了给您一些上下文以防万一,我有一个用 Python/Django 编写的工作 oauth2 服务器,我需要允许用户注册具有自定义 URL 方案的 redirect_uris。此自定义 URL 方案用于处理本机应用程序中的重定向

我的第一反应是使用 HttpResponseRedirect,但是这个 URL 有一个自定义方案并且不是 HTTP,所以我猜这不是我想要的。提前感谢您提供的任何建议。

编辑:我确实尝试过,Django 正确返回响应重定向而不会引发错误,但浏览器不会重定向到这个 URL。我正在使用 Chrome 进行测试。

编辑 2: HttpResponseRedirect 在 safari 中工作正常。

4

2 回答 2

19

这实际上不应该工作,因为 Django 只允许重定向到httphttps并且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
于 2012-12-06T15:46:07.727 回答
3

类 HttpResponseRedirect

构造函数的第一个参数是必需的——重定向到的路径。这可以> 是一个完全限定的URL(例如'http://www.yahoo.com/search/')或一个没有> 域的绝对路径(例如'/search/')。有关其他可选构造函数参数,请参阅 HttpResponse。请注意 > 这将返回 HTTP 状态代码 302。

这是从这里: https ://docs.djangoproject.com/en/dev/ref/request-response/

从我正在阅读的内容来看,它应该可以工作。

于 2012-09-07T23:13:51.303 回答