gpt4 book ai didi

python - Django REST 框架 CSRF 失败 : CSRF cookie not set

转载 作者:IT老高 更新时间:2023-10-28 20:54:24 35 4
gpt4 key购买 nike

我正在使用 django rest 框架通过 IOS 执行 API 调用我收到以下错误“CSRF 失败:未设置 CSRF cookie。”

这是我的 django API 代码:

class LoginView(APIView):
"""
List all snippets, or create a new snippet.
"""
@csrf_exempt
def get(self, request, format=None):
startups = Startup.objects.all()
serializer = StartupSerializer(startups, many=True)
return Response(serializer.data)

@csrf_exempt
def post(self, request, format=None):
profile = request.POST
....

我能做什么?

最佳答案

如果还有人关注这个问题,直接回答是需要在 View 方法本身上使用装饰器。在 APIView 类上定义的 getpost 方法只是告诉 DRF 实际 View 应该如何表现,但是 django 路由器期望的 View 方法在您调用 LoginView.as_view() 之前不会实际实例化。

因此,解决方案是将 csrf_exempt 装饰器添加到 urls.py 中。它可能如下所示:

#file: urls.py

from django.conf.urls import patterns, url
from django.views.decorators.csrf import csrf_exempt

import views

urlpatterns = patterns('',
url('^login/$', csrf_exempt(views.LoginView.as_view())),
...
)

然而,正如 Mark 在上面所指出的,csrf 保护对于防止 session 被劫持很重要。我自己没有使用过 iOS,但我会考虑使用 django 的 cookie-based csrf tokens .您可以使用 ensure_csrf_cookie 装饰器让 django 发送带有响应的 csrftoken cookie,并且只要您包含它,您的 POST 请求就会生效 token 作为 X-CSRFToken header 。

关于python - Django REST 框架 CSRF 失败 : CSRF cookie not set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16599979/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com