режим: 'no-cors' работает с fetch, но не работает для axios - PullRequest
0 голосов
/ 08 марта 2020

Я предпочитаю топор ios вместо fetch из-за его простоты и удобства использования. Я использую локальный dev-сервер, который отправляет AJAX запросов на удаленную конечную точку. Запрос блокируется из-за той же политики источника. Поэтому я изменил свою конфигурацию веб-пакета следующим образом:

devServer: {
  headers: {
    'Access-Control-Allow-Origin': '*',
  },
},

Теперь, если я использую fetch для выполнения запросов API, я добавляю "mode": "no-cors", чтобы разрешить запросы с разными источниками, и все работает нормально. Однако это не работает с топором ios.

, тогда как выборка основана на API запроса , который позволяет указывать режим: "no-cors", топор ios основан на XHR, который не поддерживает указание режима. Я могу обойти эту проблему, открыв небезопасное окно chrome, запустив chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security, где --user-data-dir - это некоторый путь моей файловой системы. Однако небезопасный экземпляр chrome не позволяет запускать расширения, поэтому я не могу использовать React и Redux DevTools. Вот фрагмент кода, который использует fetch и ax ios для выполнения запросов. Вызов fetch работает, когда ax ios не работает:

componentDidMount() {
  fetch(someAPIEndpoint, {
    mode: 'no-cors',
  })
  .then(response => console.log(response))
  .catch(error => console.error(error))

  axios
  .get(someAPIEndpoint, {
      mode: 'no-cors',
  })
  .then(results => console.log(results))
  .catch(error => console.error(error))
}

Использование прокси-сервера также невозможно в моей ситуации. Есть ли другой обходной путь в коде, чтобы я мог использовать топор ios и обойти эту проблему. Заранее спасибо !!!

...