node.js - 运行支持 HTTPS 的本地开发 IPFS 网关
问题描述
我正在构建一个旨在托管在 IPFS 上的分布式 Web 应用程序。我想在 Web 浏览器中进行开发,使用我的本地网关来提供我的文件,但是我使用了未经 HTTPS 提供的不允许使用的 Javascript API。
我尝试使用指向本地 IPFS http 网关的自签名 ssl 启动反向代理,但是当我使用反向代理访问链接时,例如https://___hashhere___.ipfs.localhost:8081/
,我被重定向到http://___hashhere___.ipfs.localhost:8080/
:
GATEWAY_PORT=$(ipfs config Addresses.Gateway | cut -d'/' -f 5)
HTTPS_PORT=$((GATEWAY_PORT+1))
echo "https proxy to your ipfs gateway now at: https://localhost:$HTTPS_PORT"
exec npx local-ssl-proxy --source $HTTPS_PORT --target $GATEWAY_PORT
如何在一两个命令中运行本地 https+ipfs 网关?我想我需要一个反向代理来重写响应中的 URL?
解决方案
如果您使用基于 Chromium 的浏览器,
http://___hashhere___.ipfs.localhost:8080/
则将window.isSecureContext
设置为true
并且您将可以访问所有 Web API。无需在本地主机上使用 Chromium 为 dev 设置 TLS(Firefox 有一个错误)。如果您正在运行 IPFS Companion,您可能希望在开发应用程序时禁用它,以确保对 IPFS 资源的请求不会重定向到浏览器扩展首选项中设置的网关。
在生产中,您将 go-ipfs 部署在反向代理后面,并且该代理终止 TLS。
X-Forwarded-Proto
您可以通过和标头控制某些重定向中使用的协议方案和主机X-Forwarded-Host
,如go-ipfs/docs/config.md 中所述
推荐阅读
- python - 使用随机索引更新张量的随机值
- reactjs - 在实现 Redux/Redux-toolkit 后切换时 Material-UI Drawer 和 Topbar 过渡动画不起作用
- python - Python OpenCv 解析进度条
- javascript - 将mysql表数据转换为JSON嵌套格式
- sql - 如何在 SQL 中更新时间以匹配两个日期时间之间定义的平均时间?
- php - 使用 BaseController 检查字段
- c# - Dapper 和大于 decimal.MaxValue 的值
- html - 从 url 下载 html 并将 tem 保存在文件夹中
- excel - 在 Z 列之后不复制数据
- scala - scala play 项目 - Kamon 的问题