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中刪除選項,那麼沒有錯誤,但我得到不正確的數據,因爲我的後端返回特定用戶的數據。
它確實有效,但爲什麼呢?我以前總是用來添加標頭和憑證! – Nitish
Django使用標題中的「Access-Control-Allow-Origin」選項拒絕任何請求。你不需要明確提供它。 – zaidfazil
好的!非常感謝! – Nitish