Доступ к данным JSON API в React - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь создать приложение погоды, используя ip-api, чтобы узнать текущие значения широты и долготы пользователей и передать их в URL-адрес darksky api, чтобы получить данные JSON погоды.У меня все хорошо, но я получаю следующие ошибки для вызова Darksky.Я делаю что-то не так, пытаясь извлечь данные из одного API и использовать его в другом?Или это просто так, как я пытаюсь сделать?

-GET 'dark sky api url' 401

-Доступ к извлечению в 'https://api.darksky....' из источника' http://localhost:3000' заблокирован политикой CORS

getLocation = async (e) => {
  e.preventDefault();
  const api_call = await fetch("http://ip-api.com/json");
  const data = await api_call.json();
  console.log(data.lat, data.lon);
  let lattitude = data.lat;
  let longitude = data.lon;

  const weather_call = await fetch(`https://api.darksky.net/forecast/${API_KEY}/${lattitude},${longitude}`);
  const weather_data = await weather_call.json();
  console.log(weather_data);
}

  render() {
    const {to, getLocation, ...rest} = this.props;
      return (
        <div className="App">
          <Landing getLocation={this.getLocation}/>
        </div>
      );

  }

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

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

0 голосов
/ 24 ноября 2018

Почему я получаю сообщение об ошибке Нет заголовка «Access-Control-Allow-Origin» на запрошенном ресурсе, когда я пытаюсь вызвать API?Мы очень серьезно относимся к безопасности в Dark Sky.В качестве меры безопасности мы отключили обмен ресурсами между источниками (CORS) на наших серверах.

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

Чтобы предотвратить злоупотребление ключами API, необходимо настроить прокси-сервер для скрытого вызова нашего API.Затем вы можете предоставлять прогнозы своим клиентам, не раскрывая свой ключ API.

вы можете искать здесь https://darksky.net/dev/docs/faq

...