无法使用从Django REST框架API获取(JS)请求数据

无法使用从Django REST框架API获取(JS)请求数据,django,reactjs,rest,cors,fetch,Django,Reactjs,Rest,Cors,Fetch,我正在尝试向位于localhost:8000的Django REST Framework API发送POST请求。当Postman发送请求时,我收到Django响应,但我在使用fetch()函数的React.js应用程序上收到控制台错误。我看到,对于React.js应用程序的请求,一个选项请求被发送到Django后端。 这是我在React应用程序上收到的错误 Access to fetch at 'http://localhost:8000/api/admin/login/' from orig

我正在尝试向位于localhost:8000的Django REST Framework API发送POST请求。当Postman发送请求时,我收到Django响应,但我在使用fetch()函数的React.js应用程序上收到控制台错误。我看到,对于React.js应用程序的请求,一个选项请求被发送到Django后端。
这是我在React应用程序上收到的错误

Access to fetch at 'http://localhost:8000/api/admin/login/' from origin 'http://ucla.localhost:3000' has been blocked by CORS policy: Request header field access-control-allow-origin is not allowed by Access-Control-Allow-Headers in preflight response.
这是我的JavaScript代码

fetch(authenticateUrl, {
      method: "POST",
      credentials: "include",
      headers: {
        Accept: "application/json",
        'Content-Type': "application/json",
        'Access-Control-Allow-Origin': '*',//"http://localhost:8000",
      },
      body: JSON.stringify({ username, password }),
      signal: abortLoginController.signal
    })
这是我的Django settings.py

MIDDLEWARE = [
    'django_hosts.middleware.HostsRequestMiddleware',
    #'debug_toolbar.middleware.DebugToolbarMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django_hosts.middleware.HostsResponseMiddleware',
]
...
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
# CORS_ORIGIN_WHITELIST = (
#     'http://sub.localhost:3000',
#     'http://localhost:3000'
# )
SESSION_COOKIE_SAMESITE = None

从实际情况来看,您的请求标头似乎包含一个您设置的CORS策略不允许的字段,特别是“访问控制允许来源”字段被策略禁止,因此您的请求被完全阻止。您可以尝试以下任一方法:

  • 修改CORS策略以允许该标头 或
  • 将Django应用程序设置为在您的请求中不发送此标头