Django Angular cors错误:不允许access-control-allow-origin

2024-01-10

我已经使用 django-rest-auth 在我的 django 应用程序中实现了身份验证。我在settings.py中的设置:

ALLOWED_HOSTS = []

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'rest_framework.authtoken',
    'rest_auth',
    'django.contrib.sites',
    'allauth',
    'allauth.account',
    'rest_auth.registration',
    'corsheaders',
    'rest_framework_docs',
    'tasks'
]

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

ROOT_URLCONF = 'urls'
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
ALLOWED_HOSTS = ['*']

SITE_ID = 1

我从前端登录 - 我收到了一个令牌,并将其存储在本地存储中。现在我发出一个简单的 GET 请求,如下所示:

  getTasks(): Observable<Task[]> {

    let headers = new Headers({ 'Access-Control-Allow-Origin': '*' });
    let options = new RequestOptions({ headers: headers, withCredentials: true  });

    return this.http.get(this.taskUrl, options)
    .map(this.extractData)
    .catch(this.handleError);
  }

但它给了我:Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers in preflight response.虽然我包括 withCredentials。

我究竟做错了什么?

P.S:如果我从 POST 中删除选项,则不会出现错误,但我会得到不正确的数据,因为我的后端返回特定用户的数据。


删除这一行,

let headers = new Headers({ 'Access-Control-Allow-Origin': '*' });

从你的getTasks()功能。您不需要向服务器指定这些选项。django-cors-headers照顾这个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django Angular cors错误:不允许access-control-allow-origin 的相关文章

随机推荐