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

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

【问题讨论】:

    标签: cors cross-domain 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) 上运行。

    【讨论】:

      猜你喜欢
      • 2011-10-28
      • 2013-07-26
      • 2013-10-15
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多