解决节点与Trinity的兼容性问题以及节点安全性检查工具介绍

解决节点与Trinity的兼容性问题以及节点安全性检查工具介绍

Trinity Desktop测试版发布之后,我们收到了多个节点运营者的报告:他们的节点可以完美的在Trinity Mobile上使用,但是却存在与Trinity Desktop不兼容的问题。

之所以出现这个问题,是因为Mobile平台和Desktop平台之间存在一些差异,本文对这些差异进行了解释,然后概述了节点所有者应该采取哪些措施来确保其节点可以与所有平台上的Trinity钱包相兼容。

此外,我们还创建了一个工具来检查节点的安全性问题以及与Trinity的兼容性 -  https://trinity.iota.org/nodes。点击该链接,输入您的节点地址然后检查一下,如果工具报告了任何问题,请继续阅读下面的内容。

启用CORS

在如何向IOTA节点发送请求方面,Trinity Mobile和Trinity Desktop有所不同。Trinity Mobile使用React Native Fetch API,而Trinity Desktop则使用Chromium browser Fetch API。这两个API在细节上有所不同 — 其中一个细节就是如何执行跨域资源共享(Cross-Origin Resource Sharing,简称CORS)请求。

公共IOTA节点接收来自托管它们的域之外的实体的请求。因此,这些节点应该通过向响应中添加一个Access-Control-Allow-Origin: * header来允许跨域请求。这基本上表明了任何人(包括Trinity钱包)都可以向节点发出请求,并且它不会局限于某个域。

Trinity Desktop还会对只出现一次的Access-Control-Allow-Origin header进行检查。如果您的节点代理的配置有错误或者处于CDN代理的后面(例如Cloudflare),则可能会多次添加这个header,导致Trinity Desktop不能接受它。

您可以使用节点检查工具来检查您的节点,或者通过在终端中运行下面的命令来对您的节点执行一个示例请求,以检查该header是否只出现过一次:

curl -I -X OPTIONS https://your.node:443

解决节点与Trinity的兼容性问题以及节点安全性检查工具介绍

配置有错误的节点的响应

解决节点与Trinity的兼容性问题以及节点安全性检查工具介绍

配置正确的节点的响应

启用Preflight request

为了验证公共节点服务器是否理解并接受CORS协议,Trinity Desktop会在实际请求之前发送一个Preflight request。为了支持Preflight request,必须对节点代理进行配置,以便通过下面的响应来允许OPTIONS请求:

  • 一个 Access-Control-Allow-Methods 的值至少包含 POST, OPTIONS
  • 一个 Access-Control-Allow-Headers 的值至少包含 Content-type, X-IOTA-API-Version

收到此响应后,Trinity Desktop会对允许向节点发送请求而“感到很满意”,并继续执行实际的POST请求。

要对这一点进行检查,请使用节点检查工具,或在终端中运行以下命令,并检查是否返回了请求的headers:

curl -I -X OPTIONS https://your.node:443

解决节点与Trinity的兼容性问题以及节点安全性检查工具介绍

正确返回的所有请求的headers

从根源上解决该问题

如果您是按照某个教程设置的节点,请联系教程的作者并向他分享这篇博客文章,以便作者提供解决方案并对教程进行更新。

如果您是自己设置的节点和SSL代理,请参阅enable-cors.org/server以进一步了解如何在不同的系统上正确的启用CORS。如果这个步骤也失败了,我们随时欢迎您前往IOTA Discord的#trinity频道寻求帮助。

作为替代方案,您始终可以使用Trinity Desktop内置节点列表中的节点,该列表会定期检查并列出更新到最新的稳定节点。

 

原文链接:https://blog.iota.org/node-configuration-for-trinity-wallet-support-4f7d48a9f7f3

inhuman

专栏作者:inhuman

个人简介:我共发表了 189 篇文章,总计被阅读了163,027 次,共获得了 1,738 个赞。

作者邮箱 作者主页 Ta的文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注