Reactjs 无法读取智能合约?

Reactjs can't read smart contract?

我在 ReactJs 中有一个项目,我使用 web3.js 从智能合约中读取,我使用 Infura 提供的以太坊客户端。问题是,当我在 Google Chrome 中访问我的项目时,一切正常。 如果我通过 Microsoft Edge 访问我的项目,我收到以下错误:

SEC7120: [CORS] The origin 'http://localhost:3000' did not find 'http://localhost:3000' in the Access-Control-Allow-Origin response header for cross-origin resource at 'https://rinkeby.infura.io/v3/censored'.

我查看了其他帖子,发现 this one 没有解决我的问题。

我注意到的其他事情: 如果我从 Internet Explorer 访问该网站,我可以正常读取数据。如果我去 Google Chrome 并且不使用 MetaMask,我可以正常读取数据。如果我激活 MetaMask 但我没有 select 正确的 infura 网络 (Ropsten) 并且我选择了例如主网络,它不会按预期工作

更新: 似乎这不是我这边的问题,而是来自 Infura。我询问了他们,​​看看 Microsoft Edge 是否限制了他们的服务,他们是否愿意用它做任何事情。

啊,好老的 CORS 问题。由于您无法控制服务器的 CORS 设置,因此最好创建一个小型服务器端应用程序来代表您的 React 应用程序代理这些请求。