Вызов API Axios - не удалось загрузить, ответ на предполетную проверку недействителен (перенаправление)

Есть ли причина, по которой приведенный ниже код работает нормально, когда я запускаю его в 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?

Rahul Sharma 16.08.2018 08:29

Я могу отправить вам личное сообщение, я не хочу, чтобы это размещалось здесь из-за возможности ограничения api

born2gamble 16.08.2018 08:32
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
2 224
1

Ответы 1

Предварительный запрос - это запрос, отправленный браузером для внедрения CORS.

NodeJS просто не выполняет предварительные запросы, потому что ему не нужно реализовывать CORS.

Предварительный запрос - это запрос OPTIONS (поэтому не ожидается тело ответа), также не разрешены перенаправления.

Чтобы исправить это, вам необходимо правильно настроить сторону API, чтобы она не возвращала перенаправление для запросов OPTIONS.

[UPD] если вы не можете прикоснуться к серверу API, вы можете реализовать свой собственный прокси-сервер, который будет принимать запросы от вашего внешнего интерфейса и запрашивать сервер API внутренне. CORS не будет применяться (с его ограничениями для предполетной проверки), также ваш ключ API будет храниться в секрете.

У меня нет доступа к API. Я немного прочитал, но все еще немного запутался. Насколько я понимаю, это так, что я не могу напрямую удалить или обновить api со своей стороны. Есть ли другой способ исправить это, пусть пока только в стадии разработки?

born2gamble 16.08.2018 09:08

@born2gamble: да, вы можете запросить собственный BE, и он отправит запрос на сервер API (без предварительной проверки CORS). Также это означает, что вы не будете раскрывать свой API-ключ.

skyboyer 16.08.2018 10:03

Та же проблема, с которой я столкнулся, все работает нормально с запросом jquery, но я использую ошибку axios cors.

Bijitashya Birinchi 11.12.2019 08:02

@BijitashyaBirinchi Я думаю, вы настроили axios для отправки дополнительных заголовков (авторизация?), Что не было сделано для версии jquery

skyboyer 11.12.2019 08:06

@ 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 }) })

Bijitashya Birinchi 11.12.2019 08:14

это моя конфигурация req, устал без заголовков, чтобы избежать параметров req, но не повезло

Bijitashya Birinchi 11.12.2019 08:16

лучше задать это как отдельный вопрос

skyboyer 11.12.2019 09:19

Другие вопросы по теме