请求Infura IPFS资源遭CORS策略拦截问题求助
解决Infura IPFS的CORS跨域问题
Access to XMLHttpRequest at 'https://infura-ipfs.io/ipfs/Qmdet.....pE1A' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
前端手动添加请求头解决不了这个问题——CORS是服务器端控制的规则,只有目标服务器返回Access-Control-Allow-Origin响应头,跨域请求才能正常通过,前端单方面修改请求头无效。
试试这几个可行方案:
- 改用Infura官方API接口:直接访问
https://infura-ipfs.io/ipfs/xxx的节点地址未配置CORS,换成Infura标准API格式请求:https://ipfs.infura.io/v0/cat?arg=Qmdet.....pE1A,这个接口默认支持跨域访问。 - 搭建本地反向代理:用Node.js写个简单的代理服务器,转发请求到Infura并添加CORS头。示例代码:
const express = require('express'); const { createProxyMiddleware } = require('http-proxy-middleware'); const app = express(); app.use('/ipfs', createProxyMiddleware({ target: 'https://infura-ipfs.io', changeOrigin: true, onProxyRes: (proxyRes) => { proxyRes.headers['Access-Control-Allow-Origin'] = '*'; } })); app.listen(4000, () => console.log('代理服务运行在4000端口'));
之后前端请求http://localhost:4000/ipfs/Qmdet.....pE1A即可绕过跨域限制。
- 检查Infura项目配置:确认你的Infura项目已正确开启IPFS服务,部分权限配置异常也可能导致响应头缺失。
内容的提问来源于stack exchange,提问作者snicky
相关产品推荐
相关产品推荐

