簡體   English   中英

如何使用 python-requests 庫傳遞 CSRF 令牌?

[英]How do I pass a CSRF token using the python-requests library?

我有一個應用程序需要使用一些 POST 數據從外部重定向到另一個 url。 我有另一個應用程序的 CSRF 令牌值。 如何使用 Python 中的請求庫構建一個簡單的 POST 請求?

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

我在哪里添加 CSRF 令牌?

您可以將 CSRF 令牌作為POST 參數HTTP 標頭發送

編輯: Django 的 CSRF 保護也需要一個Referer HTTP 標頭。 它需要與請求具有相同的來源。

使用 POST 參數:

post_data = {'email': email, 'answer': answer, 'csrftoken': crsf_token_value}
headers = {'Referer': URL}
response = request.post(URL, data=post_data, headers=headers)

使用 HTTP 標頭:

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

如果您正在使用帶有CsrfMiddleware的最新 Django, CsrfMiddleware添加到post_data字典:

post_data = {'email': email, 'answer': answer, 'csrfmiddlewaretoken': 'yourtoken'}

檢查表單變量名是否正確。

如果要在同一台服務器上重定向,只需調用其他視圖函數即可。

查看官方文檔,其中包括使用 CSRF 令牌發送 POST 請求

CSRF 令牌存儲在 cookie 中(據我所知)。 既然如此,您可以將 cookie 值存儲為某個變量,然后在您的請求中使用該值。

我建議您使用請求庫的會話對象。

此外,如果您向同一主機發出多個請求,底層 TCP 連接將被重用,這會導致性能顯着提升,並且 Session 對象具有主請求 API 的所有方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM