奇偶校验 GUI 错误(getTransactions TypeError: Failed to fetch)

Posted

技术标签:

【中文标题】奇偶校验 GUI 错误(getTransactions TypeError: Failed to fetch)【英文标题】:Parity GUI error (getTransactions TypeError: Failed to fetch) 【发布时间】:2018-09-21 04:23:51 【问题描述】:

我正在运行连接到自定义区块链 (PoA) 的奇偶校验对等点,但 我无法发送交易,也无法查看我帐户的交易列表。我收到以下错误 (see error screenshot):

请求中不存在“Access-Control-Allow-Origin”标头 资源。 406 getTransactions TypeError: 获取失败

错误指向 CORS 问题,但我为 cors 尝试的所有配置("all""null""*""none""http://example.com:8540")都导致了相同的结果。在本地运行对等体和从我的电脑远程访问 GUI 时,我得到相同的结果。所有列出的端口都在防火墙中打开。 Chrome 扩展程序被禁用;也在隐身模式下尝试过。我还尝试添加命令行选项--unsafe-expose 无济于事。

这是我在远程机器(运行 Ubuntu)上的 toml:

[parity]
chain = "pcplExternal.json"
base_path = "/home/mike/parity"
[network]
port = 30303
[rpc]
hosts = ["all"]
port = 8545
interface = "0.0.0.0"
cors =["all"]
apis = ["web3", "eth", "net", "personal", "parity", "parity_set", "traces","rpc", "parity_accounts"]
[ui]
force = true
port = 8540
interface = "0.0.0.0"
path = "/home/mike/parity/signer"
[websockets]
origins = ["all"]
apis = ["web3", "eth", "pubsub", "net", "parity", "parity_pubsub", "traces", "rpc", "shh", "shh_pubsub", "personal", "signer"]
hosts = ["all"]
port = 8450
interface = "0.0.0.0"

知道出了什么问题吗?

【问题讨论】:

您可能没有任何 CORS 问题。看来您需要解决的问题是导致 406 错误的原因。如果你解决了这个问题,你可能会发现你的 CORS 配置实际上已经按预期工作了——因为,如果服务器像大多数其他 Web 服务器一样,它不会将 CORS 响应头添加到 4xx 或 5xx 错误响应中。默认情况下,大多数 Web 服务器仅将用户配置的标头添加到 2xx 成功响应中。因此,如果服务器端发生了什么导致您的服务器以 406 响应的情况,您可能会在浏览器中看到一条 CORS 错误消息。 我不知道这里涉及的网络服务器在什么情况下会在响应中返回 406 HTTP 状态码,但是服务器通常会这样做,因为它们无法发回那种响应客户要求。例如,如果您的客户端代码添加了一个带有应用程序/json 值的 Accept 标头,但服务器无法发送应用程序/json 响应,那么发送回 406 将是一种指示方式。您需要检查服务器日志以查看服务器是否记录了任何有关导致 406 的内部消息。 需要明确的是,您的 CORS 配置似乎不太可能导致服务器以 406 响应。在正确处理符合相关规范要求的 CORS 协议的服务器中,启用 CORS 的唯一效果支持应该是使服务器发回额外的响应头。而已。否则,启用 CORS 支持永远不会导致服务器拒绝特定请求或以不同的状态代码响应它们,或者对 Accept 请求标头或实际上任何请求标头进行任何额外的检查,而不是 Origin 标头。 以上所说的,要理解的一个关键要求是服务器必须正确响应 OPTIONS 请求(不仅仅是 GET 和 POST 或您的客户端代码本身发送的任何内容)——它必须响应 OPTIONS 请求带2xx。这是因为作为 CORS 协议的一部分,浏览器有时(通常)会自动发送“预检”OPTIONS 请求。有关详细信息,请参阅developer.mozilla.org/en-US/docs/Web/HTTP/CORS。所以我猜一件事可能是,来自您服务器的 406 可能是对 OPTIONS 请求的响应。但就是这样,服务器设计的不对。 【参考方案1】:

这是 Parity 用户界面和/或 Etherscan API 中的错误。

如果您仔细查看屏幕截图,它会显示“由 Etherscan 提供支持的交易列表”,这首先与您的节点配置无关。背景是,一个完整的节点不能轻易地为您提供您帐户的交易列表。

同样,无关但仍然重要;由于您运行的是专用网络,因此 Etherscan 根本没有您的数据。

注意,我正在为 Parity 工作。

【讨论】:

以上是关于奇偶校验 GUI 错误(getTransactions TypeError: Failed to fetch)的主要内容,如果未能解决你的问题,请参考以下文章

常用校验码(奇偶校验,海明校验,CRC)学习总结

奇偶校验区别---数据校验器

错误检测奇偶校验

常用校验码及示例

奇偶校验位

CPU上奇偶校验标志的用途是啥?