为何自建AWS S3存储的SVF链接无法在Autodesk Viewer中使用?
问题描述
使用以下代码开发Autodesk Viewer时,官方示例SVF链接可正常加载,但替换为自身AWS S3存储的SVF链接时出现加载报错,需配置AWS S3让SVF文件能被Autodesk Viewer正常加载。
代码实现
viewer.js
//viewer.js var MODEL_URLS = [ // "https://petrbroz.s3-us-west-1.amazonaws.com/svf-samples/sports-car/0.svf", "https://bray-transformation-img.s3.ap-south-1.amazonaws.com/downloaded_svf/0.svf", ]; Autodesk.Viewing.Initializer({ env: "Local" }, async function () { const viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById("preview")); for (const url of MODEL_URLS) { viewer.start(url); } });
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <link rel="stylesheet" href="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/style.css" type="text/css" /> <script language="JavaScript" src="https://developer.api.autodesk.com/modelderivative/v2/viewers/viewer3D.min.js?v=v7.*" ></script> <style> html, body { margin: 0; padding: 0; width: 100vw; height: 100vh; } #preview { height: 100%; } </style> <title>Autodesk Forge: Local SVF</title> </head> <body> <div id="preview"></div> <script src="scripts/viewer.js"></script> </body> </html>
解决方法:AWS S3配置要求
要让Autodesk Viewer正常加载S3上的SVF文件,需完成以下配置:
1. 配置跨域资源共享(CORS)
Viewer运行在前端页面,会跨域请求SVF及关联资源(如纹理、几何分片等),必须配置CORS规则授权访问:
- 进入S3存储桶的「权限」标签,找到「跨域资源共享(CORS)」
- 替换现有规则为以下配置(生产环境建议将
AllowedOrigins改为你的前端域名,*表示允许所有域名):
[ { "AllowedHeaders": ["*"], "AllowedMethods": ["GET", "HEAD"], "AllowedOrigins": ["*"], "ExposeHeaders": [] } ]
- 保存配置
2. 确保文件访问权限合法
- 确认SVF文件及其关联的所有资源(
*.bin、*.png、*.json等)的访问权限为「公有读」;如果使用私有存储桶,需通过预签名URL或CDN签名授权Viewer访问
3. 验证存储桶区域与URL匹配
检查S3存储桶的实际区域是否与URL中的区域标识一致(比如你的链接用了ap-south-1,需确保桶创建在亚太南部(孟买)区域),避免区域不匹配导致请求失败
4. 确认文件完整性
下载S3上的SVF及附属资源到本地,用官方Viewer测试加载,排除文件损坏或缺失的问题
内容的提问来源于stack exchange,提问作者Vibhav Joshi
相关产品推荐
相关产品推荐

