python - 如何在代理后禁用 Django 的 CSRF 保护

标签 python django proxy django-admin django-authentication

我需要在 Proxy 后面运行一个 Django 系统(我们称之为 Alfred)。两者都在同一个网络上。作为代理,我使用 yuri vandermeer 的 django-httpproxy。 (查看他的页面 yvandermeer.net)

两个系统都运行 Django 版本 1.2.4

两个系统都在同一个(封闭的)网络中,并且在同一个 IP 上。我的代理在端口 8000 上运行,Alfred 在端口 1337 上运行。我需要使用他的/admin 站点登录到 Alfred,默认情况下 Django(我已启用)。这是通过端口 1337 工作的,但我需要通过端口 8000 访问它。

当我尝试时,Alfred 抛出 403 CSRF 错误并告诉我我实际上有点像中间人(- Alfred 的说法完全正确)。

我尝试了几种方法来禁用 Alfreds CSRF 保护:

  1. 我在 MIDDLEWARE_CLASSES 的 settings.py 中注释掉了 CsrfViewMiddleware
  2. 我创建了一个 disable.py 并将其 disableCSRF 类添加到 MIDDLEWARE 类(实际上我尝试了每个 [!] 位置),如本网站所述(问题/1785772)

    #disable.py
    class DisableCSRF(object):
        def process_request(self, request):
            setattr(request, '_dont_enforce_csrf_checks', True)
  3. 我创建了一个 disable.py 并将其 disableCSRF 类添加到 MIDDLEWARE 类中(我再次尝试了每个位置),就像在此处的其他帖子中提到的: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)
  4. 我试图在 django/middleware/csrf.py 中注释掉 Csfr 保护机制,但我发现第 190 行周围的相关部分不是第 160 行周围,如本网站所述:questions/1650941/

上面提到的都没有用。当我尝试通过/admin 登录时总是出现 403 错误

如何禁用 Alfred 的 CSRF 保护?是否可以为/admin 禁用它?我更愿意通过 2. 和 3. 中提到的中间件来做到这一点,而不是像 4. 中那样在源代码中注释掉某些东西。如果有中间件方式那就太好了。

提前致谢! :)

最佳答案

您可以在 View 函数上使用 @csrf_exempt 装饰器来禁用该 View 的 csrf。
参见documentation

关于python - 如何在代理后禁用 Django 的 CSRF 保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4791920/

相关文章:

python - 使用 headless Chrome运行Selenium的AWS Lambda容器在本地工作,但不在AWS Lambda中工作

django - ConnectionAbortedError - 如果 Celery 停止/失败或 Redis 未启动。我如何捕获/除此错误/

python - 禁用 django 消息框架后出现问题

node.js - 如何在phantomjs中设置代理

Java程序使用公钥认证和代理服务器获取SFTP服务器上的文件

javascript - Ajax跨域php代理403错误

python - 使用 SQLAlchemy 的 PostgreSQL ILIKE 查询

python - 在 Python 密码学库中提取模数 n、私有(private)指数和公共(public)指数

python - 暂时停用Python Faceted Search中的构面

android - 需要一个最小的 Django 数据存储示例