错误是什么意思? :" Forbidden(Referer check failed - no Referer。):"

时间:2017-07-26 19:54:27

标签: django nginx

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

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没有这样的问题/错误。

这个错误意味着什么,可能导致它的原因,我能解决这个问题吗?

1 个答案:

答案 0 :(得分:10)

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)

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

更多背景信息:

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

由于支付平台仅在请求POST中提供支付ID,因此不应执行CSRF检查。 Django允许您通过csrf_exempt装饰器完成此操作。