问题描述
我正在构建旨在托管在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-Proto
和X-Forwarded-Host
标头控制某些重定向中使用的协议方案和主机,如go-ipfs/docs/config.md