如何在 IPFS 上进行跨域请求

Posted

技术标签:

【中文标题】如何在 IPFS 上进行跨域请求【英文标题】:How to do cross-origin requests on IPFS 【发布时间】:2017-07-31 04:48:08 【问题描述】:

所以我想在 ipfs 上放置一个网站,但它有一些 javascript 调用不是 ipfs 网关的服务器,所以我得到了跨源错误。知道怎么做吗?

【问题讨论】:

【参考方案1】:

您可以使用ipfs config设置Access-Control-Allow-Origin标头和其他标头:

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["GET", "POST"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Headers '["Authorization"]'
ipfs config --json API.HTTPHeaders.Access-Control-Expose-Headers '["Location"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'

以上数值仅为示例;将实际值设置为您的客户端代码实际需要的值。

https://docs.ipfs.io/reference/api/cli/#ipfs-daemon 有(最少的)现有文档。

【讨论】:

哦,这看起来很有希望。所以我在做“ipfs add”之前做这个?还是在运行之前需要在网关上完成? 认为您可以随时使用ipfs config 进行更改,无需重新启动即可生效。但不要相信我的话…… 我想我缺少的是,守护进程需要这个还是网关?我意识到它们可以是同一台机器,但实际上它们不是。 守护进程需要它。或者我猜更准确地说是 API 需要它,但它需要由守护进程设置。然后,守护程序将标头传递给 API。我想你可以设置守护进程将它们传递给网关,但我认为你不需要 另外,我刚刚从头开始安装新的 ipfs(版本 0.4.6),我注意到默认情况下网关上已经设置了正确的 Access-Control-* 标头,无需我进行配置任何东西……【参考方案2】:

答案中的语法在 2021 年 3 月 19 日对我不起作用。 幸运的是,browser-ipns-publish 有一个例子。那里使用的语法是

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\"*\"]"

不确定这是否是由于在 Windows 上运行,但它可以在我的 (TM) 上运行。

【讨论】:

以上是关于如何在 IPFS 上进行跨域请求的主要内容,如果未能解决你的问题,请参考以下文章

使用 angularJS 的跨域请求

通过注解的方式允许跨域

SpringMVC中利用@CrossOrigin注解解决ajax跨域请求的问题

如何解决 Ajax 跨域请求不到的问题

请求腾讯地图webServiceAPI 跨域问题

如何解决微信上跨域请求withCredentials带不上cookie