You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI自定义视觉存储用户数据至外部云服务器遭CSP拦截求助

解决Power BI自定义视觉调用Azure Blob存储被CSP阻止的问题

1. 配置视觉权限文件pbiviz.json

Power BI自定义视觉的沙箱CSP默认限制外部API访问,需在项目根目录的pbiviz.json中声明允许的域名:

  • 打开pbiviz.json,找到permissions数组,添加Azure Blob存储的根域名:
"permissions": [
    "https://<你的存储账户名>.blob.core.windows.net"
]
  • 若使用SAS URL,只需添加基础域名,无需包含SAS参数部分。

2. 配置Azure Blob存储的CORS规则

即使视觉端配置了权限,Blob存储的CORS规则也需允许Power BI沙箱的请求来源:

  • 登录Azure门户,进入目标存储账户,找到「资源共享(CORS)」选项
  • 添加新规则,设置:
    • 允许的来源:https://app.powerbi.com(本地开发测试需额外添加http://localhost:8080)
    • 允许的方法:勾选PUT
    • 允许的标头:根据请求实际使用的标头设置(如Content-Type、x-ms-blob-type),测试阶段可临时用*
    • 最大年龄:设置为3600即可

3. 修正请求代码合规性

确保请求不违反CSP的其他限制:

  • 避免使用内联脚本、eval()等CSP禁止的语法
  • 请求URL必须严格匹配pbiviz.json中声明的域名
  • 示例PUT请求代码(基于fetch):
const blobUrl = "https://<你的存储账户名>.blob.core.windows.net/<容器名>/<文件名>?<SAS令牌>";
const userInputData = /* 收集到的用户输入数据 */;

fetch(blobUrl, {
    method: "PUT",
    headers: {
        "Content-Type": "application/json",
        "x-ms-blob-type": "BlockBlob"
    },
    body: JSON.stringify(userInputData)
})
.then(res => {
    res.ok ? console.log("上传成功") : console.error("上传失败", res.statusText);
})
.catch(err => console.error("请求异常", err));

4. 开发环境测试要点

  • 测试前需重新打包视觉并导入Power BI Desktop,确保pbiviz.json的配置生效
  • 查看浏览器控制台的CSP错误详情,明确是connect-src还是其他规则触发限制,针对性调整配置

内容的提问来源于stack exchange,提问作者hu noan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 01:24:13