Запрашивающий API с выборкой в ​​javascript имеет ошибку политики CORS - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь вызвать некоторые API с помощью fetch в моем коде JavaScript. Я занимаюсь разработкой с помощью ReactJ на моей машине, и у меня есть другая разработка в той же сети, которая разрабатывает API с .net на другой машине. С почтальоном я могу вызвать API, но с извлечением нет. Я пытаюсь вызвать другой API на другом сервере, и результат был успешным.

Я использую fetch и тоже пытался использовать axios. Я нашел другой вопрос в переполнении стека этого API: https://gturnquist -quoters.cfapps.io / api / random . В ответе говорится, чтобы попытаться получить их, а я пытаюсь снова выдать ту же ошибку.

Мой код для загрузки API gturnquist:

const myHeader = new Headers();
myHeader.append('Content-Type', 'application/json');
fetch('http://gturnquist-quoters.cfapps.io/api/random', {
  method: 'GET', headers: myHeader,
})
 .then((res) => {
   console.log(res);
   return {};
 })
 .then(res => console.log(res));

и мой код для получения API, который мне нужен:

const myHeader = new Headers();

const token = 'mytoken';
myHeader.append('id-tenant', token);
myHeader.append('Content-Type', 'application/json');

const id = 'myid';
const url = 'myurl';

fetch(`http://10.1.1.35/${url}/${id}`, {
  method: 'GET',
  headers: myHeader,
}).then(res => res.json()).then(res => console.log(res));

У меня появляются эти ошибки при попытке вызвать API

ОПЦИИ http://10.1.1.35/url/id 503 (услуга недоступна)

Доступ к выборке в 'http://10.1.1.35/url/id' из источника' http://localhost:3000' заблокирован политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: Нет 'Access-Control-Allow- Заголовок источника присутствует на запрашиваемом ресурсе. Если непрозрачный ответ соответствует вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.

Uncaught (в обещании) TypeError: Не удалось получить

Это ошибка на стороне сервера или ошибка JavaScript?

На моем сервере API настроен как ответ Rajkumar Peter

РЕДАКТИРОВАТЬ : Ошибка моей сети

Вопросы, которые я вижу, чтобы попытаться обработать мою ошибку:
Получить ошибку CORS с помощью Instagram API
Включить CORS в fetch api
управление CORS с помощью запроса GET API fetch
React-выборка с ошибкой-выборкой была заблокирована политикой CORS
Ответ на предварительный запрос не проходит проверку контроля доступа

1 Ответ

4 голосов
/ 30 мая 2019

При выполнении вызова API из веб-браузера он часто выполняет то, что называется «проверкой перед проверкой». Это, по сути, когда браузер отправляет запрос вашему API (перед вашим собственным вызовом API), чтобы проверить, что ему разрешено делать и стоит ли даже отправлять фактический запрос.

Для этого используется метод OPTIONS (вместо GET, POST .etc).

Если ваша конечная точка API не была настроена на прием запросов OPTIONS, то предварительный запрос от браузера не будет выполнен, и он прервет отправку вашего запроса.

Чтобы исправить вашу проблему, вам нужно настроить свой API на прием методов OPTIONS. Вы также должны проверить, какие источники (IP-адреса клиентов, подключающихся к API) разрешены.

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