Я пишу метод post axios в React и добавляю Access-Control-Allow-Origin, но запрос не работает, и я получаю ответ об ошибке источника cors - PullRequest
0 голосов
/ 29 апреля 2019

Я пишу метод post axios в React и добавляю Access-Control-Allow-Origin, но запрос не работает, и отправляю этот ответ:

Доступ к XMLHttpRequest в «https://api.aaaa.com/aaa/login/' от источника»http://0.0.0.0:3000' был заблокирован политикой CORS: Access-Control-Allow-Headers в поле предпросмотра заголовка запроса не разрешен в поле заголовка запроса.

axios.post('https://api.aaa.com/aaa/login/', userlogin , {
            headers :{
                'Content-Type': 'application/json',
                'Access-Control-Allow-Origin': 'http://api.aaa.com',
                'Access-Control-Allow-Credentials': true,
            }
        })

В коде бэкенда(Джанго), я добавляю пакет Corsheaders и CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_WHITELIST = ['http://0.0.0.0:3000/']

Как я могу исправить эту ошибку?

1 Ответ

1 голос
/ 29 апреля 2019

CROS должен быть добавлен из веб-сервиса, например, если api (https://api.aaaa.com/aaa/login/) написан на php, тогда в php-скрипте добавьте следующие заголовки:

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Origin, Cache-Control, Pragma, Authorization, Accept, Accept-Encoding");

Для Django:

pip install django-cors-headers

, а затем добавьте его в установленные приложения:

INSTALLED_APPS = (
    ...
    'corsheaders',
    ...
)

Вам также потребуется добавить класс промежуточного программного обеспечения для прослушивания ответов:

MIDDLEWARE_CLASSES = (
    ...
    'corsheaders.middleware.CorsMiddleware',  
    'django.middleware.common.CommonMiddleware',  
    ...
)

CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_WHITELIST = (
    'localhost:3030',
)
CORS_ORIGIN_REGEX_WHITELIST = (
    'localhost:3030',
)
...