【问题标题】:What does error mean? : "Forbidden (Referer checking failed - no Referer.):"错误是什么意思? :“禁止(Referer检查失败 - 没有Referer。):”
【发布时间】:2018-01-02 07:49:04
【问题描述】:

我有一个网站正在运行,它似乎运行良好。然而,现在我第一次在日志中看到了这个错误。

Forbidden (Referer checking failed - no Referer.): /pointlocations/
[pid: 4143|app: 0|req: 148/295] 104.176.70.209 () {48 vars in 1043 bytes} [Wed Jul 26 19:49:35 2017] POST /pointlocations/?participant=A2TYLR23CHRULH&assignmentId=3P4MQ7TPPYF65ANAUBF8A3B38A0BB6 => generated 2737 bytes in 2 msecs (HTTP/1.1 403) 1 headers in 51 bytes (1 switches on core 0)

发帖到 /pointlocations/ 时会发生这种情况,但仅限于一个特定的人(每个 participant 对每个帐户都是唯一的,所以我知道只有一个人,反复遇到这个问题。超过 500 多个其他 participant 有过没有这样的问题/错误。

这个错误是什么意思,可能是什么原因造成的,我可以解决这个问题吗?

【问题讨论】:

  • Hoi Mitchell,你能解决这个问题吗?我正面临这样的问题,但无法确定原因。会不会是因为 HTTPS/SSL 问题?
  • @QCaron。嘿。我没有故意解决它。我在应用程序的另一端工作了一段时间,它消失了。我想这与我正在做的事情有关,如果我没记错 CSRF 令牌的话。也许这会有所帮助。 github.com/Tivix/django-rest-auth/issues/164。如果您确实弄清楚了,请将其发布为答案。祝你好运。
  • 就我而言,我遇到了支付平台调用的 POST 网络挂钩的问题。在生产中,使用 HTTPS,出现了与您相同的错误。可能你必须在这里使用 csrf_exempt 装饰器。您的视图是从第三方调用的,例如通过其他服务器/网站?
  • @QCaron 是的。它被 AWS 上托管的 iframe 调用。

标签: django nginx


【解决方案1】:

TLDR:尝试为您的视图使用 csrf_exempt 装饰器:

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def my_webhook(request):
    # Do some stuffs...

    # Return an HHTPResponse as Django expects a response from the view
    return HttpResponse(status=200)

只有在绝对需要避免潜在的安全漏洞时才应该这样做。

更多上下文:

我在开发由第三方调用的网络挂钩时遇到了类似的问题,这是一种支付解决方案。每次付款状态发生变化(例如从“开放”变为“已付款”)时,第三方都会调用该网络挂钩的 Django 视图来通知我们。

由于支付平台在请求POST中只提供了支付ID,所以不应该进行CSRF检查。 Django 允许您通过 csrf_exempt 装饰器来做到这一点。

【讨论】:

  • 对 pythonanywhere.com 没有帮助
  • 本机 django 管理视图会发生这种情况!
  • 我正在使用会话身份验证,因此使用 csrf_exempt 不是我的解决方案。我现在该怎么办?
猜你喜欢
  • 2016-07-04
  • 2021-05-19
  • 1970-01-01
  • 2014-06-18
  • 2015-09-26
  • 2019-05-08
  • 1970-01-01
  • 2022-12-09
  • 2015-04-23
相关资源
最近更新 更多