【问题标题】:django and apache: get traceback of 403 Forbiddendjango 和 apache:获取 403 Forbidden 的回溯
【发布时间】:2015-03-24 10:55:46
【问题描述】:

我正在使用 Django 和 apache 开发一个 Web 应用程序。 我可以访问主页,但是当我登录时,我得到403 Forbidden。 我在哪里可以获得错误的回溯以便解决问题?

我在本地开发,所以我设置了DEBUG=True。 这是我在 apache 日志中看到的内容:

[Tue Mar 24 14:12:13.230364 2015] [mpm_event:notice] [pid 3738:tid 139683667068800] AH00493: SIGUSR1 received.  Doing graceful restart
[Tue Mar 24 14:12:13.338989 2015] [mpm_event:notice] [pid 3738:tid 139683667068800] AH00489: Apache/2.4.7 (Ubuntu) OpenSSL/1.0.1f mod_wsgi/3.4 Python/2.7.6 configured -- resuming normal operations
[Tue Mar 24 14:12:13.339010 2015] [core:notice] [pid 3738:tid 139683667068800] AH00094: Command line: '/usr/sbin/apache2'

没有错误的痕迹!

编辑: 好像不是 apache 的错误,我用 django 本地服务器也有同样的问题:

24/Mar/2015 15:51:28] "POST /accounts/participant_login/?next=/participants/ HTTP/1.1" 200 6286
[24/Mar/2015 15:51:41] "POST /accounts/participant_login/?next=/participants/ HTTP/1.1" 302 0
[24/Mar/2015 15:51:41] "GET /participants/ HTTP/1.1" 403 22

【问题讨论】:

  • 您应该使用 try/except 并记录异常以捕获未报告的错误。无论如何,如果您在尝试登录时遇到该错误,在我看来,您的表单没有 csrf 令牌并且您有一个禁止的请求。
  • 我在视图中使用了一个日志,但它没有被调用。我认为它与 csrf 令牌无关,它在生产服务器上运行良好,我没有更改代码,只是更新了 settings.py 和 apache 配置文件。
  • 您是否在本地使用 sqlite 数据库和在生产环境中使用 MySql/Postgres?如果是这样,您想授予“www-data”权限以写入数据库。如果以上都不是,我建议您使用 Pycharm 编辑器(或任何带有调试器的编辑器)并在本地运行时使用其惊人的调试工具,在本地 Apache 上对其进行测试并将其传递到生产环境。否则你最终会遇到很多这样的问题。

标签: django apache http-status-code-403 traceback


【解决方案1】:

默认情况下,您可以检查/var/log/apache2/error.log下的错误。另一个(不太推荐的)解决方案是将DEBUG 变量设置为True

【讨论】:

  • 在您运行开发服务器而不是使用 Apache 时登录是否有效?
  • 它在生产服务器上运行良好,但在我的本地服务器(使用 Apache)上运行良好。我没有改代码,只是更新了settings.py和apache配置文件。
  • 我在使用django服务器的时候也遇到了同样的问题! :(
  • 大声笑,我想我从来没有用开发服务器来过这个。你在某处有raise PermissionDenied() 吗?您是尝试使用超级用户还是仅使用员工登录?
  • 你是对的!我有一个PermissionDenied 的用户未激活(出于测试目的,我之前在数据库中停用了他的帐户)。解决了!谢谢。
猜你喜欢
  • 2014-02-18
  • 2021-03-24
  • 1970-01-01
  • 1970-01-01
  • 2015-12-29
  • 2018-06-30
  • 2020-06-21
  • 1970-01-01
相关资源
最近更新 更多