使用Soulmachines Widget代码片段点击数字分身时遇CORS及403错误求助
我太懂你这种闹心的情况了——用Soulmachines的Widget代码能正常显示数字分身,但一点击就弹出CORS和403错误,反而用scene.connect()调用同一个API Key却能正常工作,确实让人摸不着头脑。结合我接触Soulmachines的实操经验,给你几个针对性的排查方向:
先确认API Key的权限范围:Soulmachines的API Key往往是分场景权限和Widget权限的,你可以去项目控制台里检查一下,当前的API Key是否开启了「Widget嵌入」相关的授权。毕竟
scene.connect()和Widget的请求链路用的是不同的校验规则,可能你的Key只授权了场景连接,没开Widget权限。修复代码里的参数格式问题:看你贴的代码,
data-sm-profile-picture这个参数被拆成了两行,中间还有多余空格:data-sm-profile- picture="https://assets.cdn.soulmachines.cloud/AvatarCoverImages/image-sam-l.jpg"这种断行会导致参数名被解析成不完整的
data-sm-profile-,直接触发后端参数校验失败返回403。把这行合并成完整的一行试试:data-sm-profile-picture="https://assets.cdn.soulmachines.cloud/AvatarCoverImages/image-sam-l.jpg"检查项目的CORS配置:虽然
scene.connect()能正常工作,但Widget的请求指向了不同的端点(比如你看到的https://dh.soulmachines.cloud/api/jwt)。去Soulmachines的项目设置里,查看「允许的CORS源」列表,确认是否添加了你当前页面的域名。如果是本地用file://直接打开HTML文件,Origin会显示null,这肯定会被拦截,建议用本地服务器(比如http-server)启动页面,用http://localhost:xxxx访问,再把这个本地域名加到CORS允许列表里。排查Widget版本兼容性:你用的是
1.11.0版本的Widget snippet,去官方文档看看有没有更新的稳定版本,或者这个版本是否和你的项目版本匹配。有些旧版本的Widget可能存在授权逻辑的bug,导致自动生成JWT的请求失败。验证请求的API Key正确性:在浏览器控制台里查看失败请求的详细信息,确认发送的API Key是否完整、格式是否正确——有时候代码里的注释或多余字符会导致Key被截断,进而触发403错误。
备注:内容来源于stack exchange,提问作者Code The World

