Нет клиентского исправления Access-Control-Allow-Origin

1

Я пытаюсь получить бесплатные данные NFL из API с помощью suredbits. К сожалению, в своем заголовке они не добавили Access-Control-Allow-Origin, что создает проблему CORS. Когда я пытаюсь запустить код, как это...

$.getJSON("http://api.suredbits.com/nfl/v0/stats/jones/julio", function(playerData) {
      alert(playerdata); 
}

Я продолжаю получать эту ошибку. No 'Access-Control-Allow-Origin' header is present on the requested resource.

Так в основном, это их способ исправить свою ошибку через клиентскую сторону?

  • 0
    нет, потому что CORS защищает ресурсы - вы можете прокси-запросы через ваш сервер, тогда CORS не проблема
  • 0
    Это то, что я осознал после прочтения практически каждого вопроса об этом в stackoverflow. Есть ли уроки или что-нибудь, что может научить меня, как это сделать?
Показать ещё 5 комментариев
Теги:
cors

1 ответ

3
Лучший ответ

На самом деле есть способ исправить это с клиентской стороны: изменив URL-адрес запроса на https://cors-anywhere.herokuapp.com/http://api.suredbits.com/nfl/v0/stats/jones/julio:

const proxyURL = "https://cors-anywhere.herokuapp.com/";
const requestURL = "http://api.suredbits.com/nfl/v0/stats/jones/julio";
$.getJSON(proxyURL + requestURL, function(playerData) {
  console.log(playerData);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Да, это точно не исправляет его с клиентской стороны, поскольку то, что он делает на самом деле, вызывает запрос на получение через https://cors-anywhere.herokuapp.com/, который является открытым прокси CORS, который просто добавляет Access-Control-Allow-Origin чтобы браузеры позволяли вашему внешнему JavaScript-коду получить доступ к ответу.

Но, как показано в фрагменте кода в ответе, он определенно не требует каких-либо изменений на сервере, на котором установлена конечная точка API, из которой вы хотите получить данные. Вместо этого все это требует тривиального изменения вашего собственного кода интерфейса.

Конечно, полагаться на открытый открытый прокси, как это, это не правильное решение во всех случаях. Но, по крайней мере, это хорошее решение в случае, когда поставщик API просто не получил доступ к CORS, что позволило использовать их API, чтобы вы могли напрямую отправлять запросы и получать ответы, которые вы можете использовать.

Как использовать прокси-сервер CORS, чтобы обойти заголовок "Нет доступа-Контроль-Разрешить-Происхождение заголовка" ответа в заголовке No 'Access-Control-Allow-Origin' присутствует на запрошенном ресурсе - при попытке получить данные из REST API есть несколько деталей.

  • 0
    Это не «не совсем исправление со стороны клиента», это вообще не исправление со стороны клиента.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню