我尝试这个例程,使用curl向服务器发送帖子,并希望它返回http正文。
命令:
curl --data "hi server" http://127.0.0.1:8000/verification/activate/
服务器端:
def activate(request):
if request.method == 'POST':
return HttpResponse(request.body)
else:
return HttpResponse('please send a post http.')
字符串“hi server”应该是返回消息。但是我收到了这个错误:
[18/Aug/2015 03:16:34]"POST /verification/activate/ HTTP/1.1" 403 2629
答案 0 :(得分:3)
MIDDLEWARE_CLASSES
设置默认激活CSRF middleware。如果请求正文中缺少csrf标记,则此中间件返回HTTP 403
。
您可以从 settings.py 中的django.middleware.csrf.CsrfViewMiddleware
数组中删除MIDDLEWARE_CLASSES
,或使用csrf_exempt()
装饰器仅针对单个视图禁用csrf保护:
(请注意,强烈建议不要使用第一个选项来安全措施)
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def activate(request):
...