【发布时间】:2016-11-23 07:47:01
【问题描述】:
根据Django documentation,我们可以像这样设置一个默认的错误处理程序:
handler403 = 'mysite.views.my_custom_permission_denied_view'
...
我的 404 和 500 处理程序工作正常。但是在禁止访问的情况下,我无法触发它(当我引发HttpResponseForbidden 时,触发的处理程序是错误500 的处理程序)。无论如何,这不是我的问题。我的问题是,当我尝试篡改(出于测试目的)CSRF 令牌时,它会抛出“Forbidden”但同样,我的访问禁止处理程序没有被调用 - 它调用 403 禁止的默认 django 模板。当我尝试访问static(或media)目录的根目录时,调用的页面来自服务器默认的禁止页面(在我的情况下为apache httpd),这很好。
我的问题是:
- 如何设置“CSRF 验证失败”的默认处理程序?
- 403处理程序被调用的情况有哪些?
- 如何触发 403 禁止错误?
这是我的设置:
- Python 3.4
- Django 1.10(生产,调试 = False)
- 服务器:Apache httpd 通过 mod_wsgi
- Windows 7 32 位
【问题讨论】:
标签: python django apache mod-wsgi http-status-code-403