Django + React на GPC Cloud Run, пост-запрос возвращается с ошибкой 403

Я пытаюсь отправить запрос на пост для оплаты с помощью Stripe. Несмотря на множество решений на stackoverflow / рекомендаций от CGPT, мой axios post request все еще получает 403 блокировку.

Я использую react frontend и Django backend.

У меня есть представление get_csrf, которое выглядит следующим образом.

def get_csrf(request): return JsonResponse({"csrf_token": get_token(request)})

Мой react frontend имеет следующее:

axios.defaults.withCredentials = true;
const csrf = await axios.get("https://##########################.run.app/api/get-csrf");

const csrfToken = csrf.data['csrf_token']; 
axios.defaults.headers.common['X-CSRFToken'] = csrfToken;
Cookies.set('csrftoken', csrfToken);

document.cookie показывает, что установлен csrfcookie. Запрос показывает, что X-CSRFToken и withCredentials установлены.

При отправке из axios приходит ответ 403. Журналы GCP сообщают: Forbidden (CSRF cookie not set.): /api/create-payment-intent/

Мои настройки django содержат следующее:

CSRF_TRUSTED_ORIGINS = [
"https://owenmitchell.github.io", 
'http://localhost:3000',
"http://127.0.0.1:3000"]
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_SAMESITE = 'None'
CSRF_COOKIE_SECURE = True
CSRF_COOKIE_DOMAIN = 'owenmitchell.github.io'

reactfrontend настроен как страницы на github с указанным выше доменным именем.

Мои настройки CORS следующие:

CORS_ALLOW_ALL_ORIGINS = True
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOWED_ORIGINS = [
"http://localhost:3000",  # Frontend URL
"https://owenmitchell.github.io",
"http://127.0.0.1:3000",
]

CORS_ALLOW_METHODS = [
"GET",
"POST",
"PUT",
"PATCH",
"DELETE",
"OPTIONS",
]

У меня установлен django-cors-headers, 'corsheaders' находится в моих установленных приложениях, а промежуточное ПО cors находится в моем промежуточном ПО сверху.

Пост работает, когда я добавляю декоратор csrf_exempt к представлению, но поскольку пост-запрос обрабатывает платежи, обход защиты кажется мне плохой идеей.

Заранее благодарю за любую помощь, которую вы можете мне предложить.

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