На запрашиваемом ресурсе присутствует заголовок ошибки вызова API-интерфейса «Access-Control-Allow-Origin» - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь вызвать API, но он дает мне следующую ошибку:

Доступ к выборке в 'https://someapi.url/profile?FullName=sadaf&DateFrom=2000-01-01' от источника' http://localhost:3000' заблокировансогласно политике CORS: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: в запрашиваемом ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Если непрозрачный ответ удовлетворяет вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.

Я использую реагирование, и код:

try {
        let url = `https://someapi.url/profile?FullName=sadaf&DateFrom=2000-01-01`;
        let response = await fetch(url,{
            mode: 'cors', // no-cors,
            credentials: 'include',
            headers: {
                'Content-Type': 'application/json',
            "Accept": 'application/json',
            'Origin' : 'http://localhost:3000'
                //'Content-Type': 'text/xml'
                // 'Content-Type': 'application/x-www-form-urlencoded',
              },
        });

        this.setState(() => {
            return {
                searchResults : response
            }
        })
      } catch (error) {

        console.error(error);
      }

пожалуйста, руководство, что делать

1 Ответ

1 голос
/ 24 октября 2019

Ошибка из-за CORS , в коде интерфейса нет ничего плохого.

Cross-Origin Resource Sharing (CORS) - это механизм, который использует дополнительныеЗаголовки HTTP, указывающие браузерам предоставить веб-приложению, работающему в одном источнике, доступ к выбранным ресурсам из другого источника.

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

Если ваш сервер работает Express, вам нужно установить cors следующим образом:

app.use(function(req, res, next) {
  // update to match the domain you will make the request from
  res.header("Access-Control-Allow-Origin", "YOUR-DOMAIN.TLD"); 
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

или использовать промежуточное ПО cors middleware для экспресс

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