2017-07-22 244 views
3

我已经在我的django应用程序中使用django-rest-auth实施了auth。我在settings.py设置:Django Angular cors错误:不允许访问控制允许来源

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 

我从我的frontend-登录我receieved一个令牌我已经保存在我的本地存储。现在我做一个简单的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中删除选项,那么没有错误,但我得到不正确的数据,因为我的后端返回特定用户的数据。

回答

3

删除此行,

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

getTasks()功能。您不需要将这些选项指定给服务器。 django-cors-headers需要照顾。

+0

它确实有效,但为什么呢?我以前总是用来添加标头和凭证! – Nitish

+0

Django使用标题中的“Access-Control-Allow-Origin”选项拒绝任何请求。你不需要明确提供它。 – zaidfazil

+0

好的!非常感谢! – Nitish

相关问题