Понимание CORS cookies
Я уже некоторое время пытаюсь развернуть веб-приложение, которое я создал, используя reactjs для фронтенда и Django для бэкенда. После борьбы с конфигурациями django мне удалось заставить сессии работать, когда и FE и BE запущены локально, поэтому следующим шагом было развертывание BE на удаленном хосте, и я выбрал Heroku, с установкой docker, в то время как я держал FE запущенным локально для тестирования BE. развертывания. Это полностью сломало сессии django, на которые я полагался, так как BE отправлял соответствующий cookie на FE, но FE не включал его в следующий запрос, что делало его совершенно бесполезным (включение учетных данных не решало проблему). Попробовав разобраться со всеми настройками CORS на стороне сервера, (cors-headers) я пришел к выводу, что браузеры просто не разрешают эти междоменные куки. Это означает, что FE может получить междоменные куки от BE, но независимо от этого он не включит их в следующий запрос. Это приводит меня к 2 вопросам:
- Правильно ли я понимаю проблему? То есть это действительно не может быть сделано с кросс-доменными BE и FE? Если это так, то единственный подход заключается в том, чтобы FE и BE располагались на одном хосте? Одно и то же развертывание? Один и тот же хост, но разное развертывание?
Для полноты картины, вот моя конфигурация settings.py в Django:
Если вы используете axios, также необходимо добавить следующий код в index.js
// some import
axios.defaults.withCredentials = true
axios.defaults.xsrfHeaderName = "X-CSRFToken";
axios.defaults.xsrfCookieName = "csrftoken";
ReactDOM.render(
// some code
);