Как послать post запрос с csrf токеном
Хочу послать post запрос на свой сайт на django, что бы добавить комментарий, для этого нужен csrf token. Вроде в headers я его и добавляю, но мой сервер отвечает Forbidden (CSRF token missing.): /product/azregmgzczfspbesz. requests отдает ошибку 403 То есть мой запрос просто отклонен.
Код запроса
import requests
url = 'http://127.0.0.1:8000/product/azregmgzczfspbesz'
def main():
client = requests.session()
client.get(url)
if 'csrftoken' in client.cookies:
csrftoken = client.cookies['csrftoken']
else:
csrftoken = client.cookies['csrf']
data = dict(content="testreq")
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0',
'Cookie': f'csrftoken={csrftoken}; sessionid=2bfxxgv499y88yqh8bj0qhtgv1s1di9j'}
res = requests.post(url=url, data=data, headers=headers)
print(res)
if __name__ == "__main__":
main()
Форма html:
<form method="post">
{% csrf_token %}
<textarea type="text" name="content" cols="60" rows="12" maxlength="5000" required id="id_content">
</textarea><br>
<button type="submit">Отправить</button>
</form>
Если вы используете Django ≥ 4, то теперь необходимо указывать CSRF_TRUSTED_ORIGINS в settings.py:
CSRF_TRUSTED_ORIGINS = ['https://your-domain.com', 'https://www.your-domain.com']
См. документацию.