Angular+Django как получить доступ к cookie под другим доменом

Это продолжение моего предыдущего вопроса (Angular+Django CSRF token not being saved as cookie), поскольку теперь я понимаю суть проблемы.

У меня есть Angular и Django, и я пытаюсь заставить их работать с CSRF-токенами. У меня все устроено так: Django включает токен в ответ и сохраняет его в виде куки. Затем мой перехватчик Angular получает токен из хранилища куки и включает его в заголовок каждого последующего запроса. Похоже, это единственный способ, который работает, и он отлично работает локально.

При развертывании бэкенда возникает проблема: возвращаемый cookie имеет другой домен (раньше это был localhost, теперь - имя хоста бэкенда). Это означает, что служба Angular cookie не может найти его, поэтому запросы не имеют CSRF-токена.

Вместо этого я попробовал использовать HttpXsrfTokenExtractor, как предложено в https://www.stackhawk.com/blog/angular-csrf-protection-guide-examples-and-how-to-enable-it/. Но и это не нашло куки.

Я попробовал использовать встроенную в Angular поддержку CSRF-токенов (https://angular.dev/best-practices/security#httpclient-xsrf-csrf-security), но она не включает токен ни в один запрос, независимо от настроек.

Кто-то посоветовал считывать куки вручную из ответа бэкенда, а затем самостоятельно устанавливать их в качестве куки. Но это тоже не совсем просто и, как мне кажется, не так безопасно.

Я пробовал установить CSRF_COOKIE_DOMAIN на домен фронтенда (скажем, mysite.com), но тогда браузер просто отклоняет cookie из-за недействительного домена.

Хотелось бы узнать, как это исправить в данной настройке, но любые альтернативные идеи по настройке также приветствуются. Мне кажется странным, что это единственный способ заставить Angular и Django работать вместе, мне кажется, что должно быть более простое решение. Является ли это неотъемлемой проблемой того, что фронт- и бэкенд находятся на разных доменах?

Вернуться на верх