【问题标题】:Django - Redirect to another domain from ViewDjango - 从视图重定向到另一个域
【发布时间】:2018-10-26 15:07:28
【问题描述】:

我正在尝试从 mydomain.com 重定向到 google.com。 在 stackoverflow 上有几个答案,假设以下是有效的:

return HttpResponseRedirect('google.com')

return redirect('google.com')

但事实并非如此。这只是将页面重定向到自身并附加 google.com 部分,因此它会像这样出现:

www.mydomain.com/google.com

当然会引发 404.. 我的视图现在如下所示:

class MyView(TemplateView):

    def get(self, request, *args, **kwargs):
        return HttpResponseRedirect('google.com')

谁能告诉我我做错了什么?

【问题讨论】:

  • 你需要在它前面加上一个协议,或者只是//

标签: django django-views


【解决方案1】:

他们的答案在某种意义上是正确的:您进行了重定向。但是现在网络浏览器需要执行重定向。

通常假设前面没有两个连续斜杠的路径是本地:这意味着它停留在同一个域中。

如果你想去另一个域,你需要添加一个协议,或者至少两个连续的斜杠(这样协议被重用):

return HttpResponseRedirect('<b>https://</b>google.com')  # use https

或:

return HttpResponseRedirect('<b>//</b>google.com')  # "protocol relative" URL

毕竟,您只会向浏览器返回一个重定向答案。浏览器可以决定不遵循重定向(某些浏览器会这样做),或者可以以他们喜欢的任何方式解释它(尽管这意味着浏览器并没有真正做我们期望它做的事情)。我们不能强制浏览器跟随重定向。

【讨论】:

  • 啊,很好,这确实是问题所在。谢谢@WillemVanOnsem!
猜你喜欢
  • 2018-10-19
  • 2020-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
  • 1970-01-01
  • 2013-05-18
  • 2015-08-20
相关资源
最近更新 更多