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

上传至私有Azure Blob存储的资源无法在Strapi控制台预览

解决Strapi上传私有Azure Blob后无法预览/下载文件的问题

核心原因

私有Azure Blob容器中的文件默认无公共访问权限,Strapi预览依赖带有效权限的文件URL。你当前能完成上传/删除操作但无法预览下载,大概率是URL未生成SAS签名、CSP配置冗余或Provider参数错误导致。

解决方案步骤

1. 修正Azure存储Provider的serviceBaseURL配置

确保serviceBaseURL仅指向存储账户根地址,不要包含容器名称。Provider会自动拼接容器和文件路径,多余的容器名会导致URL错误:

upload: {
  config: {
    provider: 'strapi-provider-upload-azure-storage',
    providerOptions: {
      account: env('STORAGE_ACCOUNT'),
      accountKey: env('STORAGE_ACCOUNT_KEY'),
      // 正确格式:https://<你的存储账户名>.blob.core.windows.net
      serviceBaseURL: env('STORAGE_URL'), 
      containerName: env('STORAGE_CONTAINER_NAME'),
      defaultPath: 'assets',
      maxConcurrent: 100,
      expiresIn: 3600, // 确保此参数生效,生成带有效期的SAS URL
    }
  }
},

2. 简化Content Security Policy (CSP) 配置

移除img-src和media-src中多余的容器路径,仅保留Blob服务根域名即可,避免路径匹配限制:

name: "strapi::security",
config: {
  contentSecurityPolicy: {
    useDefaults: true,
    directives: {
      "connect-src": ["'self'", "https:"],
      "img-src": [
        "'self'",
        "data:",
        "blob:",
        "dl.airtable.com",
        "https://market-assets.strapi.io",
        "https://*.blob.core.windows.net"
      ],
      "media-src": [
        "'self'",
        "data:",
        "blob:",
        "dl.airtable.com",
        "https://*.blob.core.windows.net"
      ],
      upgradeInsecureRequests: null,
    },
  },
},

3. 验证SAS URL生成有效性

检查Strapi返回的文件URL是否包含SAS参数(如?sv=2023-11-03&sr=b&sig=...&se=...):

  • 如果无SAS参数:确认accountKey正确且拥有Blob读取权限,重启Strapi服务重新生成URL。
  • 如果有SAS但仍无法访问:检查expiresIn是否设置合理(不要过短),确保当前时间在SAS有效期内。

4. 清除缓存并重启服务

  • 重启Strapi服务使配置生效。
  • 清除浏览器缓存(Ctrl+Shift+Del),避免旧CSP规则或无效URL的缓存影响测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:05:16