1

当我尝试将 webhhok 添加到我的 django rest 项目中的 api 时,我设置了一个内容帐户来下载视频并返回 403。我对 django rest 和 contentful 都是新手。

http://my_server_id/testhook

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

4

1 回答 1

0

您的问题可能是因为,您应该在请求csrf token的标头中传递它。. 关于 csrf 的文档POST
X-CSRFToken: value

就像@Linovia 在评论中所说的那样,csrf_exempt已经在视图中免除了,但是由于会话仍然有一个明确的检查。
这是关于这个问题的一个很好的答案:
Django Rest Framework remove csrf
简而言之,您可以从SessionAuthenticationclass 继承并覆盖enforce_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)
于 2017-02-16T08:44:39.317 回答