Как устранить ошибку CORS при использовании fetch - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь получить данные из API metaweather.com, используя fetch в javascript, но я получаю сообщение об ошибке

Я пытался добавить https://crossorigin.me перед URL-адресом API, но он не работает

Я пытаюсь получить данные, как описано в видео, но они не работают.

приведен фрагмент кода и сообщение об ошибке

, пожалуйста, помогите

    fetch("https://crossorigin.me/https://www.metaweather.com/api/location/44418/")
  .then(data => {
    console.log(data);
  })
  .catch(error => console.log(error));
Error Message:

fetch.js: 1 GET https://crossorigin.me/https://www.metaweather.com/api/location/44418/ 522

(аноним) @ fetch.js: 1

index.html: 1 Доступ к выборке в 'https://crossorigin.me/https://www.metaweather.com/api/location/44418/' from origin 'http://127.0.0.1:5500' заблокирован политикой CORS: в запрошенном ресурсе отсутствует заголовок' Access-Control-Allow-Origin '. Если непрозрачный ответ соответствует вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.

fetch.js: 5 TypeError: Не удалось получить

Сообщение об ошибке:

fetch.js: 1 GET https://crossorigin.me/https://www.metaweather.com/api/location/44418/ 522

(анонимный) @ fetch.js: 1

index.html: 1 Доступ к выборке по адресу«https://crossorigin.me/https://www.metaweather.com/api/location/44418/' от источника» http://127.0.0.1:5500' заблокировано политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Если непрозрачный ответ удовлетворяет вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.

fetch.js: 5 TypeError: Не удалось получить

1 Ответ

0 голосов
/ 26 октября 2019

Важная часть в сообщении об ошибке:

Нет заголовка 'Access-Control-Allow-Origin' на запрашиваемом ресурсе.

ЕслиСервер, с которого вы запрашиваете ваши данные, не включает ваше происхождение в заголовок. Тогда ваш браузер заблокирует загрузку этих данных. И вы ничего не можете с этим поделать.

Я прочитал, что должен делать crossorigin.me, но, к сожалению, он не устанавливает заголовок ответа. Я бы никогда не рекомендовал использовать прокси для получения данных из API. Во-первых, вы полагаетесь на то, что прокси-сервер работает и работает (а crossorin.me уже заявляет, что он не предназначен для производственного использования), а во-вторых, прокси-сервер, вероятно, сделает все запросы за вас, затем обогатит их заголовками и отправит ихвы. Так что вы действительно должны доверять этому прокси-серверу, который обрабатывает все ваши данные.

...