Блокировка чтения из разных источников в приложении React, но не в Laravel - PullRequest
0 голосов
/ 17 октября 2018

Переход к интерфейсу React из старого приложения Laravel.Использование Fetch для вызова API.Он работает на laravel (используя fopen и stream_get_contents для получения данных), поэтому я знаю, что проблема не в сервере, а в том же localhost.Но для React, используя fetch для получения данных из API, но получаю эту ошибку: enter image description here

Я изменил тип содержимого на application / json, чтобы соответствовать заголовку, но все равно ничего.Мое тело ответа пусто.Когда я перехожу по ссылке API, я получаю XML-файл, поэтому ссылка работает, и я вижу его в своем браузере, но мое приложение реакции не содержит информацию о теле ответа.

   apiCall = () => {
    const exampleAPILink = 'My_API_URL'
    const config = {
    method: 'GET',
    mode: 'no-cors',
    headers: {
    'Content-Type': 'application/json',
    }
   };
fetch(exampleAPILink, config).then(function(response){
  console.log(response.body);
  //null
}).catch(function(error){
  console.log(error);
});

}

* Мне нужны 'no-cors', иначе я получу ошибку запрещенного доступа CORS.

1 Ответ

0 голосов
/ 17 октября 2018

no-cors означает, что вы сообщаете fetch, что вы не собираетесь делать что-либо, для чего требуется разрешение CORS, и что оно не должно запрашивать его.

Проблема в том, что вы являетесь делать то, что требует разрешения CORS.Вы пытаетесь прочитать ответ из разных источников.

В результате возникает ошибка CORBs.

Вам необходимо изменить режим на cors и изменить сервер, запрашивающий данные.от этого он дает разрешение.


Вы делаете запрос GET.Нет смысла устанавливать заголовок Content-Type.Нет тела запроса для описания типа.

Возможно, вы путаете Content-Type с Accept.

application/json - это не просто Content-Type, так что вы не толькодля чтения ответа требуется разрешение CORS, но браузер отправит предварительный запрос, чтобы сначала запросить разрешение на отправку запроса.

Не устанавливать заголовок Content-Type для запроса GET.

...