调用generateEmbedUrlForRegisteredUser嵌入Quicksight仪表板出现CORS错误
你遇到的CORS错误是AWS Quicksight服务的原生限制,generateEmbedUrlForRegisteredUser 这类嵌入URL生成接口不允许直接从前端浏览器端发起调用,所有这类调用必须放在后端服务执行,对应解决方案如下:
- 将Quicksight嵌入URL生成逻辑、
AssumeRoleWithWebIdentityRequest请求和AWS凭证生成逻辑全部迁移到你的后端服务,后端调用AWS SDK不存在CORS限制,同时也能避免前端暴露AWS凭证带来的高危安全问题。 - 你的Angular前端新增内部接口请求后端服务,仅传递必要的业务参数(比如要嵌入的Dashboard ID、当前登录用户标识等),由后端完成嵌入URL生成后返回给前端。
- 拿到嵌入URL之前,先在AWS Quicksight控制台配置前端域名白名单,否则后续iframe嵌入渲染时还会出现跨域问题:
- 打开AWS Quicksight控制台,点击右上角个人头像进入「管理Quicksight」页面
- 左侧菜单栏选择「域和接入点」
- 添加上你的Angular应用的完整访问域名(需要包含协议、端口,用非标准端口的话也要带上),保存后等待5-10分钟配置生效。
- 修正你代码里的参数错误:你当前配置里的
onLifetimeInMinutes是错误参数名,正确参数名为SessionLifetimeInMinutes,该错误会导致接口请求即使绕过CORS也会返回失败。
前端拿到后端返回的嵌入URL后,直接插入iframe的src属性即可完成仪表板嵌入。
内容的提问来源于stack exchange,提问作者Thais Molica
相关产品推荐
相关产品推荐

