gpt4 book ai didi

python - Django 返回 403 错误 - "CSRF cookie not set"

转载 作者:行者123 更新时间:2023-12-01 05:24:03 29 4
gpt4 key购买 nike

我收到 405 错误,具体说明 CSRF 验证失败。请求被中止。 CSRF cookie 未设置。

我的urls.py是:

from django.conf.urls import patterns, include, url
from django.contrib import admin
from users.views import HandlerView
admin.autodiscover()

urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^users/login$', HandlerView.as_view(), name='my-view'),
url(r'^users/add$', HandlerView.as_view(), name='my-view'),
)

我的views.py是:

from django.shortcuts import render
from django.http import HttpResponse
from django.views.generic import View

class HandlerView(View):
def get(self, request, *args, **kwargs):
return HttpResponse('Hello, World!')

def post(self, request, *args, **kwargs):
print "Hello world!"
return HttpResponse('Hello, World!')

我在终端输入的curl执行是:

curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d ' {"user" : "jeff", "password" : "pass1"} ' http://localhost:8000/users/add

运行我的服务器的终端返回:

[13/Feb/2014 00:38:06] "POST /users/add HTTP/1.1" 403 2282

我明白 CSRF 是什么,但是当没有 cookie 时,通过终端对 POST 方法进行标记会是什么?有什么办法可以解决这个问题吗?

最佳答案

它可能会出现此错误,因为您可能在中间件设置中打开了 CSRF 保护。

如果您不需要该保护,可以将 View 设置为 CSRF exempt 。您可以简单地在 View 上使用装饰器,也可以从中间件设置中将其禁用。

from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse

@csrf_exempt
def my_view(request):
return HttpResponse('Hello world')

关于python - Django 返回 403 错误 - "CSRF cookie not set",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21743232/

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