Ajax-запрос к Django успешен только в том случае, если нет сессионного cookie - PullRequest
0 голосов
/ 28 января 2019

У меня включены сеансы в Django для использования инфраструктуры аутентификации Django.

Со страницы html, обслуживаемой Django, и после аутентификации как пользователя с достаточными разрешениями я пытаюсь отправить запрос PATCHчерез функцию JQuery ajax(), и я получаю ошибки HTTP 403 с подробным ответом CSRF Failed: CSRF token missing or incorrect.

Что я сделал до сих пор:

Я включаю правильный токен csrfв поле заголовка X-CSRF-TOKEN.Я установил SESSION_COOKIE_HTTPONLY = False.

Файл cookie, отправляемый в запросе ajax, включает идентификатор сеанса.Если я избавлюсь от этого sessionid, запрос будет выполнен успешно. Для этого я либо удаляю куки сеанса в браузере, либо редактирую запрос PATCH в инструментах разработчика браузера и повторно отправляю его, удаляя sessionid из поля заголовка Cookie.Очевидно, мне нужно повторно войти в систему, как только я обновлю страницу, но пока я могу PATCH до глубины души.

До сих пор я не мог выяснить, почему присутствие sessionidcookie заставляет Джанго отклонить запрос.

...