2017-07-22 194 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

相關問題