当会话过期时,django的禁止(403)响应,如何将其更改为未授权(401)

时间:2012-12-14 23:14:04

标签: django session csrf django-csrf

我正在尝试在应用程序中上传文件。我清空我的浏览数据或以某种方式结束我的会话,然后我点击上传。我从我的文件系统中选择一个文件,我从Django的服务器得到一个禁止的(403)错误。 csrf.py的代码被执行。

if not constant_time_compare(request_csrf_token, csrf_token):
                logger.warning('Forbidden (%s): %s',
                               REASON_BAD_TOKEN, request.path,
                    extra={
                        'status_code': 403,
                        'request': request,
                    }
                )
                return self._reject(request, REASON_BAD_TOKEN)

现在,我不想改变Django的代码,我如何向用户而不是403呈现401.我不想从服务器捕获403并在我的Javascript中将其更改为401。还有其他解决办法感谢

1 个答案:

答案 0 :(得分:1)

CSRF_FAILURE_VIEW设置允许您  编写自己的CSRF故障视图。您可以编写一个返回HTTP状态401的文件。