js-ipfs是否提供只读网关服务?为何默认网关无法访问?
问题原因与解决方法
核心原因
ipfs daemon启动时默认会加载并启动所有IPFS核心附加服务(包括HTTP只读网关),但Node.js环境下调用ipfs.create()时,HTTP网关服务默认是禁用状态——哪怕配置里写了网关端口,不手动开启的话,服务根本不会启动,自然会出现连接拒绝、端口未被占用的情况。
解决步骤
需要在ipfs.create()的配置项中显式开启网关服务,并指定端口:
const IPFS = require('ipfs') async function startIPFS() { const node = await IPFS.create({ config: { Addresses: { // 指定网关监听地址和端口 Gateway: '/ip4/127.0.0.1/tcp/9090' }, Gateway: { Enabled: true, // 关键:开启网关服务 Writable: false, // 设置为只读模式,和ipfs daemon默认行为一致 HTTPHeaders: { // 可选:配置允许跨域等请求头 'Access-Control-Allow-Origin': ['*'] } } } }) console.log('IPFS节点启动完成,网关已开启') } startIPFS()
验证方式
启动Node.js应用后,控制台会输出类似Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/9090的日志,此时再访问127.0.0.1:9090/ipfs/[你的CID]就能正常读取IPFS文件了。
内容的提问来源于stack exchange,提问作者Timotei Oros
相关产品推荐
相关产品推荐

