Threejs版本是12.4
之前Threejs老版本提供了解决方案:
THREE.ImageUtils.crossOrigin = ''; //处理纹理图加载跨域问题
目前网上还有不少上述解决方案,但是新版本的纹理加载,Threejs已经默认解决了该问题,通过源码我们可以看到:
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跨域的相对方案。