Есть ли причина, по которой приведенный ниже код работает нормально, когда я запускаю его в Nodejs, используя платформу AdonisJs на порту 3333.
Но если я запускаю это из своего приложения React на порту 3000 в componentWillMount, я получаю сообщение об ошибке
Failed to load https://jsonodds.com/api/odds/nfl: Response for preflight is invalid (redirect)
componentWillMount(){
axios.get("https://jsonodds.com/api/odds/nfl", {headers: {"X-Api-Key": "xxx"}})
.then(function (response) {
console.info(response)
})
.catch(function (error) {
console.info(error);
});
}
Я могу отправить вам личное сообщение, я не хочу, чтобы это размещалось здесь из-за возможности ограничения api



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Предварительный запрос - это запрос, отправленный браузером для внедрения CORS.
NodeJS просто не выполняет предварительные запросы, потому что ему не нужно реализовывать CORS.
Предварительный запрос - это запрос OPTIONS (поэтому не ожидается тело ответа), также не разрешены перенаправления.
Чтобы исправить это, вам необходимо правильно настроить сторону API, чтобы она не возвращала перенаправление для запросов OPTIONS.
[UPD] если вы не можете прикоснуться к серверу API, вы можете реализовать свой собственный прокси-сервер, который будет принимать запросы от вашего внешнего интерфейса и запрашивать сервер API внутренне. CORS не будет применяться (с его ограничениями для предполетной проверки), также ваш ключ API будет храниться в секрете.
У меня нет доступа к API. Я немного прочитал, но все еще немного запутался. Насколько я понимаю, это так, что я не могу напрямую удалить или обновить api со своей стороны. Есть ли другой способ исправить это, пусть пока только в стадии разработки?
@born2gamble: да, вы можете запросить собственный BE, и он отправит запрос на сервер API (без предварительной проверки CORS). Также это означает, что вы не будете раскрывать свой API-ключ.
Та же проблема, с которой я столкнулся, все работает нормально с запросом jquery, но я использую ошибку axios cors.
@BijitashyaBirinchi Я думаю, вы настроили axios для отправки дополнительных заголовков (авторизация?), Что не было сделано для версии jquery
@ skyboyeraxios .post('https://test.pvi.com/j_spring_security_check', { withCredentials: true, crossorigin: true, headers: { common: { 'Access-Control-Request-Method': 'POST', 'Access-Control-Request-Headers': 'origin, x-requested-with', // 'Origin': 'https://localhost:5000', 'X-Api-Key': 'xxx' } }, data: JSON.stringify({ j_username: email, j_password: password }) })
это моя конфигурация req, устал без заголовков, чтобы избежать параметров req, но не повезло
лучше задать это как отдельный вопрос
вы также можете кодировать api?