Сбой проверки CSRF в производственном процессе для кросс-доменного POST-запроса - PullRequest
2 голосов
/ 25 апреля 2019

Заголовок HTTP_X_CSRFTOKEN не соответствует содержимому файла cookie csrftoken.

Как я могу проверить куки? Set-Cookie не отображается в заголовке ответа для междоменных запросов.

Я уже следовал инструкциям, найденным в:

CSRF с Django, React + Redux с использованием Axios

Интересно, что я обнаружил, что «X-CSRFTOKEN» переводится как «HTTP_X_CSRFTOKEN» в заголовке запроса сервера.

Прекрасно работает в среде разработки под localhost (хотя я использую 2 разных порта - один для django, а другой мой интерфейс).

UPDATE:

Кажется, что cookie csrktoken неправильно настроен для междоменных запросов (хотя браузер отображает его в заголовке запроса), поэтому X-CSRFTOKEN не отправляется.

Я закончил тем, что добавил вызов API для возврата текущего csrftoken с помощью запроса GET, а затем отправил его обратно с помощью заголовка X-CSRFTOKEN.

1 Ответ

0 голосов
/ 03 мая 2019

Вы должны будете сделать заголовок X-CSRFTOKEN доступным через директиву CORS Access-Control-Expose-Headers.Пример:

Access-Control-Expose-Headers: X-CSRFTOKEN

Этот заголовок должен быть установлен вашим API или веб-сервером, чтобы браузер мог видеть его во время запроса предварительной проверки CORS.

...