0

我正在尝试利用 IPFS 在通过 http 协议加载的动态站点上加载静态内容,例如图像和 javascript 库。

例如https://www.example.com/是一个普通的 web 2.0 页面,这里有一个图片参考https://www.example.com/images/myimage.jpg

在 myimage.jpg 上发出请求时,将提供以下标头

x-ipfs-path: /ipfs/QmXXXXXXXXXXXXXXXXX/images/myimage.jpg 

然后由 IPFS Companion 浏览器插件将其翻译为:

https://127.0.0.1:8081/ipfs/QmXXXXXXXXXXXXXXXXX/images/myimage.jpg

问题在于,它已定向到本地 IP 上的 SSL 页面,由于协议错误而无法加载。(将上述内容从 https 更改为 http 有效)

现在,如果我直接从地址栏请求https://www.example.com/images/myimage.jpg ,它会加载以下内容:

http://localhost:8081/ipfs/QmYcJvDhjQJrMRFLsuWAJRDJigP38fiz2GiHoFrUQ53eNi/images/myimage.jpg

然后是 301 到:

http://(some other hash).ipfs.localhost:8081/images/myimage.jpg

导致图像加载成功。

我假设因为初始页面是通过 SSL 提供的,所以它也希望通过 SSL 提供静态内容。我还假设这就是为什么它通过 https 使用本地 IP,而不是在另一条路由中使用 localhost。

我的问题是,我该如何让它工作?

  • 是否有一个标题可以让 IPFS 伴侣强制它通过 http 加载?如果是这样,我假设这会由于混合内容而导致浏览器安全警告。我尝试添加此标头但没有运气:X-Forwarded-Proto: http
  • 我是否需要做一些事情来启用 SSL over 127.0.0.1,将其与我的本地节点连接起来?如果是这样,这似乎不是客户的默认设置,并且担心如果他们不遵循一些额外的步骤,所有内容都会显示损坏的图像。
  • 甚至可以从非 IPFS 页面通过 IPFS 提供静态内容吗?

任何提示表示赞赏!

编辑:这似乎会影响 Chrome 引擎和 Firefox。

4

1 回答 1

0

看起来像您的配置错误。

在干净的浏览器配置文件上使用具有默认设置的IPFS Companion可以按预期工作。

打开:https://example.com/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi重定向很好http://localhost:8080/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi,然后根据根 CID 重定向到唯一的 Origin:http://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi.ipfs.localhost:8080/

您使用自定义端口 (8081),这意味着您在某个时间点更改了 ipfs-companion Preferences 中的网关地址。

潜在的解决方法:去那里并确保您的“本地网关”设置为http://localhost:8081(而不是https://)。

如果http://有,请查看是否有其他扩展或浏览器设置强制https://(检查此行为是否发生在浏览器配置文件上,然后一一添加扩展/设置,以确定问题的根源)。

于 2022-02-06T17:48:38.027 回答