Express 如何设置静态资源可跨域?
在前端使用 fetch 请求 express 服务的静态资源,例如
fetch('http://localhost:4545/1.png').then(function(response) {
return response.blob();
}).then(function(myBlob) {
console.log( myBlob )
});
但是发现报错
Failed to load http://localhost:4545/1.png: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://xxxx' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
已经是设置了各种的请求头配置
res.header( 'Access-Control-Allow-Origin', '*' );
res.header('Access-Control-Allow-Credentials', 'true');
res.header('Access-Control-Allow-Methods', 'GET,HEAD,PUT,PATCH,POST,DELETE');
res.header('Access-Control-Expose-Headers', 'Content-Length');
res.header('Access-Control-Allow-Headers', 'Accept, Authorization, Content-Type, X-Requested-With, Range');
路由是能跨域了,但是静态资源存在跨域问题,请问如何解决?
附上贴图,
请求是成功的,但没有返回( 偶尔会有 ),但是控制台会有报错
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你需要设置fetch请求的请求头,还需要启用
mode
为cors
模式,像这样:有个简单的方法,使用cors模块
npm库
github
或者
打开控制台,看响应是否有对应的头,你程序应该是没有设置成功
今天也遇到这个问题了,使用express.static后,如果要让静态资源访问可跨域,要给express.static传入第二个参数,第二项参数里有一个setHeader字段,可以设置返回的请求头