我有一个网站运行,似乎工作正常.然而,现在我第一次在日志中看到了这个错误.
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 /时会发生这种情况,但仅限于一个特定的人(每个参与者对于每个帐户都是唯一的,所以我知道它只有一个人,反复出现这个问题.超过500个其他参与者没有这样的问题/错误.
最佳答案
TLDR:尝试将csrf_exempt装饰器用于您的视图:
原文链接:https://www.f2er.com/nginx/434351.htmlfrom 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装饰器执行此操作.