我正在尝试从重定向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')
谁能给我关于我做错事情的见解?
从某种意义上说,他们的回答是正确的:您进行重定向。但是现在Web浏览器需要执行重定向。
通常不与两个连续斜线前缀路径被假定为本地:因此,这意味着它停留在同一个域。
如果您想转到另一个域,则需要添加一个协议或至少两个连续的斜杠(以便重新使用旧协议):
return HttpResponseRedirect('https://google.com') # use https
要么:
return HttpResponseRedirect('//google.com') # "protocol relative" URL
毕竟,您只能将重定向答案返回到浏览器。浏览器可以决定不遵循重定向(某些浏览器可以这样做),也可以按照他们喜欢的任何方式对其进行解释(尽管这意味着浏览器并没有真正做到我们可以预期的做)。我们不能强迫浏览器遵循重定向。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句