什么是@csrf_exempt

时间:2018-08-06 14:39:37

标签: django-rest-framework

我是Django-rest-framework的新手。我对此不太了解。什么是“ @csrf_exempt”?我们为什么要在views.py中使用它?请帮助我的细节。 另外,如果还有“ @csrf_exempt”的其他选项,也请告诉我。

3 个答案:

答案 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 将作为通知您的站点的方式,然后切断未订阅客户对您的服务的访问。