Не удается получить 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
Также невозможно получить доступ к 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()