THREE.js GLTFLoader CORS错误如何启用CORS?

THREE.js GLTFLoader CORS error how to enable CORS?

你好,我正在尝试使用 THREE.js GLTFLoader 加载 GLTF 模型,我收到 CORS 错误(不存在访问控制允许的来源..) 我也从 s3 存储桶中提取其他资产,一切正常,除了 GLTF,所以我猜我需要将一些 CORS 标志传递给 GLTFLoader。 现在:

    this.loader = new THREE.GLTFLoader();
    this.loader.load(avatar_path, gltf => {..})

Edit1:我已经尝试过:

   loader.setCrossOrigin( 'anonymous' ) 

   loader.setCrossOrigin( 'use-credentials' ) 

没有成功。总是相同的 CORS 错误。

您不需要在 three.js 中设置任何内容。 Three.js 需要时自动请求 CORS 权限。

这很可能是服务器配置。

打开浏览器的开发工具,转到网络选项卡,重新加载页面,查看 .gltf 文件的请求和响应。您应该在 "request"(来自浏览器)中看到一个 CORS header,并在响应(来自 S3)中看到一个 "access-control-allow-origin: *" header。我的猜测是服务器的响应缺少 header,这意味着您的服务器配置不正确。

只是一个猜测,但如果加载到 three.js 的图像有效,而不是页面本身的图像,因为那些不需要 CORS 许可)而是实际的纹理,那么问题是您的 S3 配置为发送 CORS仅适用于某些类型的文件。如果使用纹理的图像也不起作用,那么问题是更基本的 CORS 配置

示例:

首先你需要在你的电脑上设置一个本地网络服务器,然后你需要创建一个.php文件并在其中写入以下代码: < ? php header("Access-Control-Allow-Header: *") ?> 然后将该文件包含到您的 html 文件中。 它对我有用......