Substrate节点教程问题:本地网络设备无法通过浏览器访问远程节点
Substrate节点远程前端连接失败解决方案
该报错由浏览器跨域资源共享(CORS)策略限制,结合Substrate节点默认的访问控制规则导致,你本地前端可连接远程节点是因为浏览器对localhost域名的跨域校验更宽松,远程部署前端时会触发严格校验,按以下步骤操作即可解决:
- 补全节点启动的跨域允许参数
你当前的启动参数缺少跨域配置,替换为以下完整命令重启节点:
./target/release/node-template --dev --tmp --ws-external --rpc-external --rpc-cors all
*如果需要更高安全性,可将all替换为你远程前端的域名/IP,仅允许指定来源的跨域请求。
- 检查服务器端口开放状态
确认远程Ubuntu服务器的9944(WebSocket默认端口)、9933(RPC默认端口)及前端服务端口的防火墙规则已放开,可通过以下命令查看防火墙状态:ufw status
若对应端口未开放,执行以下命令放行:ufw allow 9944/tcp && ufw allow 9933/tcp - 修改远程前端的节点连接配置
部署在远程服务器的前端,需将src/config/development.json中的PROVIDER_SOCKET字段从默认的ws://127.0.0.1:9944修改为ws://<你的远程服务器公网IP>:9944,修改完成后重新编译打包前端再部署生效。 - 额外HTTPS场景适配
如果你的远程前端使用HTTPS协议访问,浏览器安全策略会禁止HTTPS页面发起未加密的WS请求,此时需要给节点WebSocket服务配置SSL证书,或通过Nginx反向代理9944端口做SSL封装,再将前端配置的连接地址修改为wss://<你的域名>:<代理端口>即可。
内容的提问来源于stack exchange,提问作者Rkj
相关产品推荐
相关产品推荐

