错误是啥意思? :“禁止(Referer检查失败 - 没有Referer。):”
Posted
技术标签:
【中文标题】错误是啥意思? :“禁止(Referer检查失败 - 没有Referer。):”【英文标题】: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 调用。 【参考方案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 不是我的解决方案。我现在该怎么办?以上是关于错误是啥意思? :“禁止(Referer检查失败 - 没有Referer。):”的主要内容,如果未能解决你的问题,请参考以下文章