Axios отправляет ОПЦИИ вместо GET - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь делать вызовы API локально в приложении реагирования, используя axios.

Я уже добавил django-cors-headers и следовал документации, но, похоже, она не работает.

Я всегда получаю сообщение об ошибке:

localhost /: 1 Доступ к XMLHttpRequest в «http://127.0.0.1:8000/api/todos/' из источника» http://localhost:3000' заблокирован политикой CORS: заголовок запросаAccess-Control-Allow-Headers в поле access-control-allow-origin не разрешен в ответе перед полетом.

my base.py:

INSTALLED_APPS = [
    # ...
    "corsheaders",
    "rest_framework",
    "todo",
    "api",
]

MIDDLEWARE = [
    # ...
    "corsheaders.middleware.CorsMiddleware",
    "django.middleware.common.CommonMiddleware",
    # ...
]

CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = False

В моем приложении реакции:

const [todos, setTodos] = useState({})
useEffect(
    () => {
        axios.get(
            api_url, {
                headers: {
                    "Access-Control-Allow-Origin": "*",
                }
            }
        ).then(
            res => {
                setTodos(res.data);
                console.log(res.data)
            }
        ).catch(
            err => {
                console.log(err)
            }
        )
    }, []
)

Обратите внимание, что даже без настройки белого списка и возврата настроек CORS к:

CORS_ORIGIN_ALLOW_ALL = False
CORS_ALLOW_CREDENTIALS = True

Мне все еще удается получить данные в вызове get с использованием httpie, просто запустив http + url.

Примечание 2. Когда axios пытается получить данные, я получаю их на терминале, на котором запущено приложение Django:

[04 / Jun / 2019 18:15:29] "ОПЦИИ /api / todos / HTTP / 1.1 "200 0

ВАЖНОЕ РЕДАКТИРОВАНИЕ: Проблема, похоже, не с моим сервером, я использовал fetcч вместо аксиоса и все прошло нормально.С Axios мой сервер получал метод OPTIONS, и я не знаю почему, я давал эту проблему с CORS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...