【问题标题】:Reactjs can't read smart contract?Reactjs 无法读取智能合约?
【发布时间】:2018-10-12 20:02:22
【问题描述】:

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

SEC7120:[CORS] 原点“http://localhost:3000”未找到 Access-Control-Allow-Origin 响应中的“http://localhost:3000” 跨域资源的标头位于 'https://rinkeby.infura.io/v3/censored'。

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

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

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

【问题讨论】:

  • 这是一个 CORS 错误。它与 reactjs 无关,它只是意味着您查询的基本 url 与您查询的基本 url 不同,这是您的目标不允许的。没有看到任何代码很难说什么。

标签: javascript reactjs access-control web3js cross-origin-read-blocking


【解决方案1】:

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

【讨论】:

  • 我想了解一些事情。那么从技术上讲,这个 CORS 问题仅在本地测试应用程序时才会出现?因为我不介意将它部署到客户端,因为我仍然可以在 Google Chrome 中对其进行测试,所以它不会影响我的体验
  • @Cristian CORS 是一种安全措施,您将在生产中遇到同样的问题。这是智能合约“服务器”上的设置。这有点痛苦,但如果您对它的工作原理和方式感到好奇 - developer.mozilla.org/en-US/docs/Web/HTTP/CORS
猜你喜欢
  • 1970-01-01
  • 2022-11-29
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
  • 2019-11-02
  • 2022-10-22
  • 2023-01-25
  • 2020-04-08
相关资源
最近更新 更多