Невозможно выполнить запрос GET для моего локального хоста или внешнего API (приложение express) - PullRequest
0 голосов
/ 28 января 2020

Я создаю приложение React для использования API, созданного мной с использованием express. js. Мое приложение React успешно получает данные, используя fetch или ax ios для запроса данных с использованием официального API («https://jsonplaceholder.typicode.com/users»), но я получаю сообщение об ошибке, когда пытаюсь получить данные из собственного API ( "XXX.us-east-1.elasticbeanstalk.com/api/v1/users") или от моего локального хоста ("http://localhost: 81 / api / v1 / users ").

Вопросы Мой запрос GET неверен? Есть ли проблема с возвратом из моего API? Вы бы порекомендовали какие-либо ресурсы, чтобы научиться создавать RESTful API с Express. js, настроить его в AWS и использовать этот API с приложением React?

Спасибо!


Ошибка:

Доступ к выборке в 'XXX.us-east-1.elasticbeanstalk.com/api/v1/users' из источника 'http://localhost : 3000 'было заблокировано политикой CORS: На запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Если непрозрачный ответ удовлетворяет вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS


Использование fetch:

componentDidMount() {
    fetch
      ('https://jsonplaceholder.typicode.com/posts/1')
      // ('XXX.us-east-1.elasticbeanstalk.com/api/v1/users')
      // ('http://localhost:81/api/v1/users')
      .then(response => response.json())
      .then(data =>
        this.setState({
          title: data.title,
          body: data.body
        })
      );
  }

Использование axios:

componentDidMount() {
    axios
      .get('https://jsonplaceholder.typicode.com/users').then(res => this.setState({ users: res.data }))
   // .get('http://localhost:81/api/v1/users', { crossDomain: true }).then(res => this.setState({ users: res.data }))
      .catch(function (error) {
        console.log("Error");
      });
  }

1 Ответ

0 голосов
/ 28 января 2020

Это на самом деле проблема cors в express, поэтому, чтобы решить ее, добавьте следующее в стартовый файл

var express = require('express');
var app = express();
app.use(cors());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...