Reactjs не может прочитать умный контракт?
У меня есть проект в ReactJs, где я использую web3.js для чтения смарт-контракта, и я клиент Ethereum, предоставленный Infura. Проблема в том, что когда я захожу на свой проект в Google Chrome, все работает нормально. Если я получаю доступ к своему проекту через Microsoft Edge, я получаю следующую ошибку:
SEC7120: [CORS] Источник " http://localhost:3000/" не нашел " http://localhost:3000/" в заголовке ответа Access-Control-Allow-Origin для ресурса перекрестного источника по адресу " https://rinkeby.infura.io/v3/censored'.
Я просмотрел другие посты и нашел тот, который не решил мою проблему.
Другие вещи, которые я заметил: если я захожу на сайт из Internet Explorer, я могу читать данные как обычно. Если я захожу в Google Chrome и не использую MetaMask, я могу читать данные как обычно. Если я активирую MetaMask и не выбираю правильную сеть Infura (Ropsten) и выбираю, например, Main Network, она не будет работать должным образом
ОБНОВЛЕНИЕ: Кажется, что это не проблема с моей стороны, а вместо этого исходит от Infura. Я поинтересовался у них, является ли Microsoft Edge ограничением их услуг, и готовы ли они что-либо с этим сделать.
1 ответ
Ах, старая добрая проблема CORS. Поскольку у вас нет контроля над настройками CORS на сервере, вам лучше создать небольшое серверное приложение, которое будет прокси-запрос на эти запросы от имени вашего реагирующего приложения.