Django rest framework 当与django rest集成时,Contentful wehook返回403

Django rest framework 当与django rest集成时,Contentful wehook返回403,django-rest-framework,webhooks,contentful,Django Rest Framework,Webhooks,Contentful,当我试图在django rest项目中向api添加webhhok时,我设置了一个内容丰富的帐户来下载视频并返回403。我对django休息和满足都是新手 http://my_server_id/testhook 我设置了钩子并添加了我的api url。因此,当事件触发时,它调用了我的api。但是django rest中的所有时间都显示禁止。在将webhook与django rest集成时,我应该选择哪些额外的措施?您的问题可能是因为csrf令牌,您应该使用POST请求在标题中传递它。 X-CS

当我试图在django rest项目中向api添加webhhok时,我设置了一个内容丰富的帐户来下载视频并返回403。我对django休息和满足都是新手

http://my_server_id/testhook

我设置了钩子并添加了我的api url。因此,当事件触发时,它调用了我的api。但是django rest中的所有时间都显示禁止。在将webhook与django rest集成时,我应该选择哪些额外的措施?

您的问题可能是因为
csrf令牌
,您应该使用
POST
请求在标题中传递它。
X-CSRFToken:value

正如@Linovia在评论中所说,
csrf\u employ
在视图中已经被豁免,但由于会话,仍然有一个明确的检查。
关于这个问题,这里有一个很好的答案:

简而言之,您可以从
SessionAuthentication
类继承并重写
enforce\u csrf

from rest_framework.authentication import SessionAuthentication 

class CsrfExemptSessionAuthentication(SessionAuthentication):

    def enforce_csrf(self, request):
        return  # To not perform the csrf check previously happening
在视图或基本Django REST配置中设置它:

authentication_classes = (CsrfExemptSessionAuthentication, BasicAuthentication)

您的问题可能是因为
csrf令牌
,您应该在头中通过
POST
请求传递它。
X-CSRFToken:value

正如@Linovia在评论中所说,
csrf\u employ
在视图中已经被豁免,但由于会话,仍然有一个明确的检查。
关于这个问题,这里有一个很好的答案:

简而言之,您可以从
SessionAuthentication
类继承并重写
enforce\u csrf

from rest_framework.authentication import SessionAuthentication 

class CsrfExemptSessionAuthentication(SessionAuthentication):

    def enforce_csrf(self, request):
        return  # To not perform the csrf check previously happening
在视图或基本Django REST配置中设置它:

authentication_classes = (CsrfExemptSessionAuthentication, BasicAuthentication)

这是随机字符串对的。我如何知道应该以webhook形式添加的csrf令牌的值。@您可以在对服务器的
GET
请求的响应中看到该字符串。在web钩子的情况下,您可能需要使用
csrf_-empt
来阻止视图中的csrf检查。您的回答是正确的,只是csrf_-empt对Django REST框架没有影响,因为视图已经被豁免,但DRF的会话身份验证会进行显式检查。@Linovia感谢您的观点,我在DRF中的会话身份验证中看到了关于csrf的一个很好的答案,我将把它贴在这里它是随机字符串。我如何知道应该以webhook形式添加的csrf令牌的值。@您可以在对服务器的
GET
请求的响应中看到该字符串。在web钩子的情况下,您可能需要使用
csrf_-empt
来阻止视图中的csrf检查。您的回答是正确的,只是csrf_-empt对Django REST框架没有影响,因为视图已经被豁免,但DRF的会话身份验证会进行显式检查。@Linovia感谢您的观点,我在DRF中的会话身份验证中看到了一个关于
csrf
的好答案,我将在这里发布