Запрос Postman к django с помощью csrf работает, но не с запросом в NextJS

В настоящее время я работаю над системой входа в систему, которая требует POST-запроса и CSRF-аутентификации, поэтому я начал использовать Postman для отправки запросов и взял фрагмент, предоставленный генератором:

const myHeaders = new Headers();
myHeaders.append("X-CSRFToken", "OmgnDDPPS4TRcERF3XNuYw4uJ3OBSwmmSq7ktjM5wX2oT02DWuWZwX57BOOLCA3h");
myHeaders.append("Cookie", "csrftoken=OmgnDDPPS4TRcERF3XNuYw4uJ3OBSwmmSq7ktjM5wX2oT02DWuWZwX57BOOLCA3h");

const requestOptions = {
  method: "POST",
  headers: myHeaders,
  redirect: "follow"
};

fetch("http://127.0.0.1:8000/simulazione/api/prova_token/", requestOptions)
  .then((response) => response.text())
  .then((result) => console.log(result))
  .catch((error) => console.error(error));

Запрос выше работает в Postman, но когда я использую этот код в Next.js, я получаю запрещенную ошибку: [30/Apr/2024 13:11:47] "POST /simulazione/api/prova_token/ HTTP/1.1" 403 2869

Вот вид и настройки Django:

View

@csrf_protect
def prova_token(request):
    
    if request.method == 'POST':
    
        return JsonResponse("hello", safe=False)

Настройки

CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True

#CSRF_COOKIE_SECURE = False
CSRF_COOKIE_HTTPONLY = False
SESSION_COOKIE_SECURE = False
SESSION_COOKIE_SAMESITE = None

ALLOWED_HOSTS = [ ]
CSRF_TRUSTED_ORIGINS = ["http://127.0.0.1:3000","http://localhost:3000"]

CORS_ALLOW_HEADERS = [
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'csrftoken',
'x-requested-with',
]

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

CORS_ALLOWED_ORIGINS = [
    'http://127.0.0.1:3000',
    'http://localhost:3000',
]
# Application definition

INSTALLED_APPS = [
    'corsheaders',
    'simulazione.apps.SimulazioneConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django_nextjs',    
    'rest_framework',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

Я попытался сделать запрос, отправив csfr в качестве заголовка, и ожидал получить доступ к методу представления

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