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 令牌?
您可以将 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)