Pinata IPFS API pinFileToIPFS请求持续返回403 AccessDenied问题排查
问题原因及修复方案
1. 优先检查API密钥权限
Pinata的API密钥支持细粒度权限配置,/testAuthentication端点仅校验密钥有效性,不会校验操作权限。你需要登录Pinata后台,确认当前使用的API密钥已勾选Pinning Services分类下的「Pin to IPFS」权限,未开通该权限会直接返回403错误。
2. 移除手动设置的Content-Type请求头
你的代码中手动指定了multipart/form-data的boundary,axios在传入FormData类型的请求体时会自动生成符合规范的Content-Type头,手动指定的boundary极易和实际传输的边界值不匹配,导致Pinata无法正确解析请求体,触发权限校验失败。
修改post请求的配置项,删除Content-Type的手动配置即可:
await axios.post(url, data, { maxBodyLength: 'Infinity', //this is needed to prevent axios from erroring out with large files headers: { pinata_api_key: apiKey, pinata_secret_api_key: apiSecret } })
3. 校验配额与文件限制
- 确认Pinata账户存储配额未用尽,免费版总存储限额为1GB
- 确认上传的文件大小未超出限额,免费版单文件最大支持100MB
- 确认S3读取流正常可访问,未出现提前中断、无权限读取S3文件的情况
4. 确认请求端点正确性
pinFileToIPFS的官方请求地址为https://api.pinata.cloud/pinning/pinFileToIPFS,若你配置的url有误也会触发403错误。
内容的提问来源于stack exchange,提问作者0xD1x0n
相关产品推荐
相关产品推荐

