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

Firebase Storage与AppCheck大量未验证请求问题咨询

问题解答

1. 存储并使用下载URL是否导致未验证请求?

是的,你通过getDownloadURL()获取的是带签名的临时URL(包含token参数),但当你把这个URL直接传给CachedNetworkImage加载时,这些请求是直接发向Firebase Storage的CDN,不会自动携带App Check Token——这就是你看到大量未验证请求的原因。

2. URL参数是否有误?

你提供的URL格式是正确的:

https://firebasestorage.googleapis.com/xxx/o/20267567567221.webp?alt=media&token=2667a8d4-7d1b-40df-8584-4af0673d4995

其中token是Firebase生成的签名令牌,仅用于验证该URL本身的合法性,它和App Check Token是完全不同的两类令牌,后者的作用是验证请求来自你的合法应用。

3. 是否需要手动添加App Check Token?

需要,但不能直接通过CachedNetworkImage默认逻辑实现——因为它的默认HTTP客户端不会自动携带App Check Token。你需要自定义HTTP客户端,在请求头中添加X-Firebase-AppCheck令牌:

示例代码:

// 获取App Check令牌
final appCheckToken = await FirebaseAppCheck.instance.getToken();

// 自定义HTTP客户端
final customHttpClient = HttpClient()
  ..addRequestCallback((request) {
    if (appCheckToken != null) {
      request.headers.add('X-Firebase-AppCheck', appCheckToken);
    }
  });

// 使用自定义客户端加载图片
CachedNetworkImage(
  imageUrl: images,
  httpClient: customHttpClient,
);

4. 配置App Check后,标准下载URL的请求状态?

默认情况下,用getDownloadURL()获取的标准下载URL发起的请求是未验证的——Firebase Storage不会自动检查这些请求的App Check令牌,除非你在Firebase控制台的Storage规则里明确配置了App Check验证,同时你的请求也携带了正确的App Check令牌。

补充说明:getDownloadURL()这个获取URL的操作本身,如果你已经配置了App Check插件,Firebase SDK会自动携带App Check令牌去请求,所以这个步骤是已验证的;但后续用这个URL加载图片的请求,SDK不会自动处理,需要你手动添加令牌。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:35:14