threejs加载在线纹理跨域问题

发布于 2024-02-27 11:55:01

环境

Threejs版本是12.4

引言

之前Threejs老版本提供了解决方案:

THREE.ImageUtils.crossOrigin = '';   //处理纹理图加载跨域问题

目前网上还有不少上述解决方案,但是新版本的纹理加载,Threejs已经默认解决了该问题,通过源码我们可以看到:
image.png

crossOrigin属性的默认值为'anonymous'

解决方案

遇到该问题建议还是让后端配置跨域,但是我尝试了最常用的方案:

app.all('*', function (req, res, next) {
 res.header("Access-Control-Allow-Origin","*");
 res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
 res.header("Access-Control-Allow-Headers", "X-Requested-With");    
 res.header("Access-Control-Allow-Credentials", "true");
 res.header('Access-Control-Allow-Headers', ['mytoken','Content-Type']);    
 next();
})

依然没有解决此问题,通过思考,确定我是只有通过服务上传的图片,也就是静态文件存在跨域问题,于是采用cors跨域插件进行的解决。
在命令行中输入npm i cors -s
在nodejs服务中添加下面代码:

let cors = require("cors");
app.use(cors());

以上就是解决Threejs跨域的相对方案。

0 条评论

发布
问题