django捕获http引用程序不总是工作

django捕获http引用程序不总是工作,django,Django,如果HTTP\u REFERER存在并且不包含mysite.com或者HTTP\u REFERER未给出,则应重定向到起始页 我的代码部署在7台服务器上,通过loadbalancer进行调度,所有这7台服务器中的代码都是最新的。但是,只是有时候,这种重定向不起作用 我可能做错了什么 在不起作用的情况下: 一家新闻网站发布了一条关于我的页面的新闻,并从我的页面粘贴了一个深度链接。我点击了那个链接,它没有重定向。我很惊讶,检查了我的代码,一切正常,然后再次点击链接和宾果,这次它确实将我重定向到sta

如果
HTTP\u REFERER
存在并且不包含
mysite.com
或者
HTTP\u REFERER
未给出,则应重定向到起始页

我的代码部署在7台服务器上,通过loadbalancer进行调度,所有这7台服务器中的代码都是最新的。但是,只是有时候,这种重定向不起作用

我可能做错了什么

在不起作用的情况下:


一家新闻网站发布了一条关于我的页面的新闻,并从我的页面粘贴了一个深度链接。我点击了那个链接,它没有重定向。我很惊讶,检查了我的代码,一切正常,然后再次点击链接和宾果,这次它确实将我重定向到startpage。我很高兴,我想可能是缓存或smthg。但后来,我点击了链接,重定向又不起作用了。然后贴出这个问题。该案例与浏览器类型和版本无关

首先,此代码也可以缩短:

if 'HTTP_REFERER' in request.META and 'mysite.com' not in request.META['HTTP_REFERER'] or 'HTTP_REFERER' not in request.META:
    return redirect('/')
其次,
HTTP\u REFERER
不保证存在。可能只是用户正在使用书签,或者浏览器自动完成,这意味着HTTP\U引用程序可能在您测试的情况下出现,也可能不出现

如果使用书签的站点的有效用户将被重定向。同样,从
somedomain.com/mysite.com
引用的无效用户也将被重定向。在这种情况下,在检查referer时最好使用
startwith()
。有没有更好的方法来管理你正在尝试做的事情


也许你可以用更多的上下文来更新这个问题。我愿意尽我所能帮助您。

您有没有这种情况不起作用的例子?链接上是否有任何javascript单击事件可能会影响请求?您的项目中的所有视图也会调用此代码吗?谢谢您的热情帮助。我将在一段时间内用更多的上下文/用例更新我的问题
if 'mysite.com' not in request.META.get('HTTP_REFERER', ''):
    return redirect('/')