我需要在代理之后运行Django系统(我们称之为Alfred)。两者都在同一个网络上。作为代理我使用yuri vandermeer的django-httpproxy。 (见他的网页yvandermeer.net)如何在代理之后禁用Django的CSRF保护
两个系统上运行的Django版本1.2.4
两个系统都在同一个(封闭的)网络,并在同一个IP。我有代理端口8000和端口1337上运行阿尔弗雷德。我需要登录到阿尔弗雷德使用他/管理网站,默认情况下与Django(和我已启用)。这是通过端口1337工作,但我需要通过端口8000访问它。
当我尝试它,阿尔弗雷德是抛出一个403 CSRF错误,并告诉我,我很酷的东西像一个人在 - 中间( - 和阿尔弗雷德说得那么完全正确)。
我试过几件事情要禁用艾尔弗雷德CSRF保护:
- 我在settings.py注释掉CsrfViewMiddleware在MIDDLEWARE_CLASSES
我创建了一个disable.py并添加其disableCSRF类中间件类(其实我想每个[!]位置)喜欢上这个网站提到的(问题/ 1785772)
#disable.py class DisableCSRF(object): def process_request(self, request): setattr(request, '_dont_enforce_csrf_checks', True)
我创建了一个disable.py并添加其disableCS RF类的中间件类(再次我想每个位置)想在这个其他文章中提到在这里:http://hi.baidu.com/ledzep2/blog/item/e6b1612e21884c5c4ec2267a.html
#disable.py class DisableCSRF(object): def process_view(self, request, callback, callback_args, callback_kwargs): setattr(request, '_dont_enforce_csrf_checks', True)
我试图注释掉在Django /中间件/ csrf.py捷克斯洛伐克保护机制,但我发现围绕190线的相关部分不在本文提到的线160附近:提问/ 1650941/
没有提到的东西有效。当我尝试通过/ admin登录时,总是遇到403错误
如何禁用Alfred上的CSRF保护?是否可以只为/ admin禁用它?我更喜欢用2和3中提到的中间件来做这件事,而不是像4中那样在源代码中评论某些东西。如果有一种中间件,那将会很棒。
在此先感谢! :)
[djproxy](https://github.com/thomasw/djproxy)对你来说可能是更好的选择。它不会丢失cookie信息,并且更易于配置和使用。 – Thomas 2014-04-21 17:29:19