在macos 10.10.5下使用Django 1.8和Python 3.4的Django http 403错误

时间:2015-08-18 03:40:56

标签: python django http

我尝试这个例程,使用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

1 个答案:

答案 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):
    ...