运行支持HTTPS的本地dev IPFS网关

问题描述

我正在构建旨在托管在IPFS上的分布式Web应用程序。我想在Web浏览器中进行开发,使用本地网关来提供文件,但是我使用的Javascript API必须在未通过HTTPS服务的情况下才能使用。

我尝试使用自签名的ssl指向我的本地IPFS http网关来启动反向代理,但是当我使用反向代理访问链接(例如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上的localhost上为开发人员设置TLS(Firefox具有bug)。

  • 如果您正在运行IPFS Companion,则可能在开发应用程序时将其禁用,以确保对IPFS资源的请求不会重定向到浏览器扩展的“首选项”中设置的网关。

  • 在生产中,您在反向代理后面部署了go-ipfs,该代理终止了TLS。您可以通过X-Forwarded-ProtoX-Forwarded-Host标头控制某些重定向中使用的协议方案和主机,如go-ipfs/docs/config.md

    中所述

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...