我是Django-rest-framework的新手。我对此不太了解。什么是“ @csrf_exempt”?我们为什么要在views.py中使用它?请帮助我的细节。 另外,如果还有“ @csrf_exempt”的其他选项,也请告诉我。
答案 0 :(得分:1)
装饰器将视图标记为不受中间件确保的保护。示例:
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def my_view(request):
return HttpResponse('Hello world')
检查documentations中的csrf 跨站点请求伪造保护。
阅读正在使用的堆栈文档的一种好方法是使用类似zeal的方法来获取引用。
答案 1 :(得分:1)
通常,当您通过表单提出请求时,您希望提交到视图的表单源于您的网站,而不是来自其他某个域。为确保发生这种情况,您可以在表单中放置一个csrf令牌,以供视图识别。如果将@csrf_exempt
添加到视图的顶部,则基本上是在告诉该视图不需要令牌。这是一项安全性豁免,您应该认真对待。
答案 2 :(得分:0)
除非您确切知道原因,否则您不必使用它。使用它的一个很好的例子是构建一个 webhook,它将通过 POST 请求从另一个站点接收信息。即使没有 csrf 令牌,您也必须能够接收数据,但将被另一个安全系统取代。例如,如果您对客户的订阅使用条带,您需要知道客户是否取消订阅了他的帐户。 webhook 将作为通知您的站点的方式,然后切断未订阅客户对您的服务的访问。