如何使用 python-requests 库传递 CSRF 令牌?

Dea*_*ker 1 python django csrf-protection

我有一个应用程序需要使用一些 POST 数据从外部重定向到另一个 url。我有其他应用程序的 CSRF 令牌值。如何使用 Python 中的 requests 库构造一个简单的 POST 请求?

csrf_token = "kjsbfckjsdnfcksdnkl"
post_data = {'email': email, 'answer': answer}
response = request.post(URL, data=post_data)
Run Code Online (Sandbox Code Playgroud)

在哪里添加 CSRF 令牌?

aum*_*umo 9

您可以将 CSRF 令牌作为 POST 参数HTTP 标头发送。

编辑: Django 的 CSRF 保护也需要Referer HTTP标头。它需要与请求具有相同的来源。

使用 POST 参数:

post_data = {'email': email, 'answer': answer, 'csrftoken': csrf_token_value}
headers = {'Referer': URL}
response = request.post(URL, data=post_data, headers=headers)
Run Code Online (Sandbox Code Playgroud)

使用 HTTP 标头:

post_data = {'email': email, 'answer': answer}
headers = {'X-CSRFToken': csrf_token_value, 'Referer': URL}
response = request.post(URL, data=post_data, headers=headers)
Run Code Online (Sandbox Code Playgroud)