#javascript #reactjs #azure #cors #azure-iot-hub
#javascript #reactjs #azure #cors #azure-iot-hub
Вопрос:
Я пытаюсь подключиться к Azure Device twin из моего приложения ReactJS. Чего я хочу добиться, так это прочитать отчетные данные с устройства в среде Javascript в ReactJS. Это код, который я использую
import React from 'react'
function Greet() {
const connectionString = '##########';
// The device ID.
const deviceId = '####';
// The sample connects to service-side endpoint to call direct methods on devices.
const Client = require('azure-iothub').Client;
const Registry = require('azure-iothub').Registry;
// Connect to the service-side endpoint on your IoT hub.
const client = Client.fromConnectionString(connectionString);
// The sample connects to an IoT hub's Event Hubs-compatible endpoint to read messages sent from a device.
const { EventHubClient, EventPosition } = require('@azure/event-hubs');
// const { Console } = require('console');
// const { stripResponse } = require('@azure/ms-rest-js');
// Locate the device twin via the Registry, then update some tags and properties.
const registry = Registry.fromConnectionString(connectionString);
registry.getTwin(deviceId,function (err, twin) {
if (err) {
//redMessage(err.constructor.name ': ' err.message);
} else {
console.log("Last received patch: " twin.properties.reported.Wifi);
console.log("Firmware version: " twin.properties.reported.firmwareVersion);
console.log("Fan status: " twin.properties.reported.fanOn);
console.log("Min temperature set: " twin.properties.reported.minTemperature);
console.log("Max temperature set: " twin.properties.reported.maxTemperature);
}
});
return (
<h1>helloo</h1>
)
}
export default Greet
Это Greet.js файл, в котором код будет реализован. Я вызвал Greet.js файл в app.js досье.
Когда я запускаю это, я получаю сообщение об ошибке в консоли. Это скриншот ошибки. Снимок экрана с сообщением об ошибке
Ошибка, которую я получаю, — это ошибка «Заблокировано политикой CORS». Любые предложения о том, как этого избежать?Заранее спасибо.
Комментарии:
1. На самом деле это не ошибка, а намек на то, что государственные предприятия API не любят, когда их так называют. Вы должны изучить заголовки / документы, чтобы определить, как его следует вызывать и с каких сайтов
2. Спасибо за помощь. Понял это
Ответ №1:
Похоже, API не предназначен для вызова из интерфейса. Возможно, вам потребуется реализовать внутренний уровень, который вместо этого вызывает API. Использование строки подключения непосредственно из интерфейса также кажется мне немного опасным, поскольку любой, кто посещает страницу, может увидеть ее и получить доступ ко всем данным в IoT Hub.
Комментарии:
1. Можете ли вы рассказать мне, как реализовать внутренний уровень для вызова api. У меня проблема еще и потому, что в коде нет прямого запроса GET.
2. Создание серверной части — довольно большая задача, на которую нельзя ответить коротким способом. Вы выбираете свою серверную технологию (Node.js / Python / Java / .NET / PHP / что-то еще) и сначала начните с некоторых руководств.
3. Спасибо, мне очень помогло. Реализация запроса GET на серверной части сработала. Спасибо