当我尝试将 webhhok 添加到我的 django rest 项目中的 api 时,我设置了一个内容帐户来下载视频并返回 403。我对 django rest 和 contentful 都是新手。
http://my_server_id/testhook
我设置了钩子并添加了我的 api url。所以它在事件触发时调用了我的 api。但是在 django rest 中一直显示禁止。将 webhook 与 django rest 集成时我应该选择哪些额外的措施?
当我尝试将 webhhok 添加到我的 django rest 项目中的 api 时,我设置了一个内容帐户来下载视频并返回 403。我对 django rest 和 contentful 都是新手。
http://my_server_id/testhook
我设置了钩子并添加了我的 api url。所以它在事件触发时调用了我的 api。但是在 django rest 中一直显示禁止。将 webhook 与 django rest 集成时我应该选择哪些额外的措施?
您的问题可能是因为,您应该在请求csrf token
的标头中传递它。. 关于 csrf 的文档POST
X-CSRFToken: value
就像@Linovia 在评论中所说的那样,csrf_exempt
已经在视图中免除了,但是由于会话仍然有一个明确的检查。
这是关于这个问题的一个很好的答案:
Django Rest Framework remove csrf
简而言之,您可以从SessionAuthentication
class 继承并覆盖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)