首页 > 解决方案 > CSRF 验证失败。请求中止。(Python 请求模块)

问题描述

我的views.py(Django项目)中有这个功能

def boardsJson(request):
    user=request.GET.get('user')
    password=request.GET.get('password')
    :
    :
    Bla Bla Bla 
    :
    :
    return HttpResponse("Login Success")

我正在尝试通过此请求模块登录。

import requests
URL = "http://35.196.206.72:8000/boardsJson/"
PARAMS = {
    'user':'1234567890',
    'password':'kak',
    }
r = requests.get(url = URL, params = PARAMS)
print(r.text)

在我使用 GET 方法登录之前,一切都很好。但是,如果我使用 POST(我只是在每个地方都用“POST”替换了“GET”)方法,那么我会收到类似下面的消息。

  <p>CSRF verification failed. Request aborted.</p>
  <p>You are seeing this message because this site requires a CSRF cookie when submitting forms. This cookie is required for security reasons, to ensure that your browser is not being hijacked by third parties.</p>
  <p>If you have configured your browser to disable cookies, please re-enable them, at least for this site, or for âsame-originâ requests.</p>

所以请帮我解决它。谢谢你。

标签: pythondjangodjango-rest-frameworkpython-requestshttprequest

解决方案


您需要在帖子中包含 CSRF 令牌或将 CSRF Exempt 装饰器添加到视图中(如果您要绕过它)。

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def boardsJson(request):
    user=request.GET.get('user')
    password=request.GET.get('password')
    :
    :
    Bla Bla Bla 
    :
    :
    return HttpResponse("Login Success")

请参阅https://docs.djangoproject.com/en/3.0/ref/csrf/#unprotected-view-needs-the-csrf-token


推荐阅读