Не удается получить CSRF-токен из ответа Django REST Framework

Проблема в том, что сервер отвечает заголовком set-cookie с csrftoken, но он не отображается в хранилище.

The client lies at the address: https://quiz-client-app.herokuapp.com
The server is located at: https://quiz-server-app.herokuapp.com

enter image description here

Также невозможно получить доступ к cookie, используя JS

getCookie.js

const csrfTokenHeader = () => {
    let csrftoken = null

    return () => {
        if (document.cookie && document.cookie !== '' && !csrftoken) {
            const cookies = document.cookie.split(';');
            for (let i = 0; i < cookies.length; i++) {
                const cookie = cookies[i].trim();
                if (cookie.substring(0, 'csrftoken'.length + 1) === ('csrftoken' + '=')) {
                    csrftoken = decodeURIComponent(cookie.substring('csrftoken'.length + 1));
                    break;
                }
            }
        }

        return { 'X-CSRFToken': csrftoken }
    }
}

Как я могу получить доступ к cookie?

Вот настройки CSRF сервера и пример вида: settings.py

ALLOWED_HOSTS = ['quiz-client-app.herokuapp.com'] # On production

# CSRF
CSRF_COOKIE_SAMESITE = "None"
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_SECURE = True
CSRF_TRUSTED_ORIGINS = ['quiz-client-app.herokuapp.com']
CSRF_COOKIE_DOMAIN = "quiz-server-app.herokuapp.com"

# SESSION
SESSION_COOKIE_SAMESITE = "None"
SESSION_COOKIE_HTTPONLY = False 

# CORS
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_HEADERS = [
    "content-type",
    "x-csrftoken"
]
CORS_ALLOW_METHODS = [
    "OPTIONS",
    "GET",
    "POST",
    "PUT",
    "DELETE"
]

CORS_ALLOWED_ORIGINS = [
    'https://quiz-client-app.herokuapp.com'
]

views.py

@method_decorator(ensure_csrf_cookie, name='post')
class LoginView(APIView):
    def post(self, request):
        ...
        return Response()
Вернуться на верх