react应用程序内部的JsonRPCProvider出现Ethers Provider CORS错误



遇到一个问题,我的ethers提供者给了我一个只读函数的cors问题。我甚至没有创建任何交易或任何东西。我尝试过更改节点和不同的rpc,但没有帮助。你可以在下面找到我得到的错误图片。这是我的提供程序代码,我将其导入所有的函数页,下面是一个函数示例。非常基本的东西。

这是一个基本的react应用程序,显示有关币安智能链令牌的一些信息。

import { ethers } from "ethers";
const provider = new ethers.providers.JsonRpcProvider(
"https://speedy-nodes-nyc.moralis.io/1c2baaae7c0d11120337ddc1/bsc/mainnet"
);
export default provider;

示例功能:

export const getReflectionLive = async () => {
try {
const tokenContract = new ethers.Contract(tokenAddress, tokenAbi, provider);
let rate = await getDeadRate();

tokenContract.on("Transfer", async (from, to, value, event2) => {
console.log("New Dead Balance addition", (value / 10 ** 9) * 0.05 * rate);
});
} catch (error) {
console.log(`error --> ${error}`);
}
};

我的所有错误代码:

错误代码

×
Unhandled Rejection (Error): could not detect network (event="noNetwork", code=NETWORK_ERROR, version=providers/5.4.4)
Access to fetch at 'https://speedy-nodes-nyc.moralis.io/1c2baaae7c0d11120337ddc1/bsc/mainnet' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
POST https://speedy-nodes-nyc.moralis.io/1c2baaae7c0d11120337ddc1/bsc/mainnet net::ERR_FAILED

×
Unhandled Rejection (Error): missing revert data in call exception (error={"reason":"processing response error","code":"SERVER_ERROR","body":"{"jsonrpc":"2.0","id":52,"error":{"code":-32000,"message":"missing trie node 264c5265b90a8eb574898445f88321e330c126156794b45cfec08ede5c80f693 (path )"}}","error":{"code":-32000},"requestBody":"{"method":"eth_call","params":[{"to":"0xc748673057861a797275cd8a068abb95a902e8de","data":"0x70a08231000000000000000000000000000000000000000000000000000000000000dead"},"0xbc4921"],"id":52,"jsonrpc":"2.0"}","requestMethod":"POST","url":"https://bsc-dataseed.binance.org/"}, data="0x", code=CALL_EXCEPTION, version=providers/5.4.4)

假设您知道自己在做什么(安全!(,并且在运行Apache服务器的情况下。您可以在Apache中的站点配置中添加以下内容:

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "DELETE, POST, GET, OPTIONS"
Header set Access-Control-Allow-Headers "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"

不要忘记启用Apache的头模块。

背景:Ethers.js要求在";"跨域/端口/服务器";操作一些访问权限,以便在每个支持的浏览器中工作。这强制Web服务器发送所有必需的内容并允许所有内容。

相关内容

最新更新