Получена ошибка 403 CSRF при входе через запросы Python - PullRequest
0 голосов
/ 14 марта 2012

Я использую Pinax, и я пытаюсь выполнить проверку входа в систему на проекте account, используя модуль requests.

Я сделал это

def test001_login(self):
    #cookies = {'csrftoken': 'a8356fd05b25fad7004994fd5da89596'}
    r = requests.post(self.loginurl, data={'username':self.username, 'password': self.password}, auth=(self.username, self.password),allow_redirects=True)

    print r.status_code
    print r.text
    print r.cookies

Возвращенный файл cookie пуст!!С помощью метода get я получаю печенье.Что является причиной этой проблемы?

r.text результат:

<code>    <p>Reason given for failure:</p>
    <pre>
    No CSRF or session cookie.
    

Как правило, это может произойти, если имеется подлинная подделка межсайтовых запросов или когда

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

Ваше сообщение не передает токен CSRF в логин. Работает ли это:

r = requests.post(self.loginurl, data={'csrf_token': django.middleware.csrf.get_token(), 'username':self.username, 'password': self.password}, auth=(self.username, self.password),allow_redirects=True)
0 голосов
/ 14 марта 2012

CSRF работает, добавляя в форму скрытое поле, содержащее переменный токен, и проверяя его при публикации формы.Вы получаете эту ошибку, потому что вы не включили токен в сообщение.Вы можете обойти это, или выключить, или использовать «надлежащие» средства для модульного тестирования.

См. Документацию CSRF .

Возможно, стоит поискать Клиент , если вы занимаетесь тестовой разработкой

...