如何在 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 上进行跨域请求的主要内容,如果未能解决你的问题,请参考以下文章