Ошибка CORS при получении данных из API Zoho на веб-интерфейсе React - PullRequest
0 голосов
/ 05 сентября 2018

Компания, в которой я работаю, использует биометрическую посещаемость и синхронизирует данные на серверах Zoho для ведения учета. Я пытался разработать веб-приложение с использованием API-интерфейса Zoho People, который позволяет мне знать, когда я зарегистрировался и когда истечет 8,5 часов.

Я использовал Create-React-App для разработки того же самого.

Теперь вызовы API работают правильно на сервере узла, где я могу регистрировать данные, но когда я запускаю локальный сервер с помощью npm start, Chrome не может показать данные, и я получаю следующую ошибку:

Failed to load https://people.zoho.com/people/api/attendance/getAttendanceEntries?authtoken=*******&date=05-Sep-2018&dateFormat=dd-MMM-yyyy&emailId=******&empId=****: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

Чтобы обойти эту проблему, мне пришлось установить расширение Allow-Control-Allow-Origin chrome: https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en

Используя это расширение, приложение работает, и я могу видеть данные. Но без этого расширения я не. Попытался включить некоторые HTTP-заголовки, связанные с CORS, в файл js, но безрезультатно. Пожалуйста, дайте мне знать, если требуется более подробная информация. Спасибо!

P.S. Я также был бы очень признателен, если бы кто-нибудь смог ELI5 объяснить, почему это происходит, и как на самом деле работает передача данных с сервера API на мой клиент.

1 Ответ

0 голосов
/ 05 сентября 2018

Лучшим способом, который предлагали люди, было создание собственного внутреннего сервера. (Я сделал это с помощью expressjs). Сервер запросил API, извлек результаты и приложение реагирования смогло извлечь его с локального сервера без каких-либо проблем с CORS.

Отлично работает на локальных серверах. Нужно выяснить, как развернуть то же самое на удаленных серверах.

...