Django-angular Доступ к XMLHttpRequest был заблокирован политикой CORS
При попытке зафиксировать POST-запрос на сервере django я получаю следующую ошибку:
Obj:1 Access to XMLHttpRequest at 'http://localhost:8000/api/' from origin
'http://localhost:4200' has been blocked by CORS policy: Request header field
content-type is not allowed by Access-Control-Allow-Headers in preflight response.
Вот код, в котором я делаю запрос:
return this.http.post(url, data,
{headers: new HttpHeaders({
'Content-Type': 'application/json',
'Accept': 'application/json',
'Access-Control-Allow-Headers': 'Content-Type',
})}
)
А это моя django-настройка для corsheaders:
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_HEADERS = ["access-control-allow-origin"]
Любой взгляд на проблему и на то, как улучшить вопрос, будет благодарен
Как указал @jub0bs, проблема была решена следующим образом:
Удаление заголовка Access-Control-Allow-Headers
из запроса и замена его на CORS_ALLOW_HEADERS = ["Accept", "Content-Type"]
в конфигурации CORS.
Заголовок Access-Control-Allow-Origin
- это заголовок ответа CORS, который уже установлен промежуточным ПО CORS в номинальном случае; нет никаких причин указывать его в качестве разрешенного имени заголовка запроса в конфигурации CORS.
Рекомендуемое чтение: developer.mozilla.org/en-US/docs/Web/HTTP/CORS