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

如何基于HTTP头过滤Google Cloud Storage请求?拦截无Range头请求

可行,具体实现如下

Google Cloud Storage(GCS)的安全规则确实支持访问HTTP请求头,你可以通过request.headers对象检查请求是否携带Range头,从而过滤掉未携带该头的GET请求。

安全规则示例

针对存储COG文件的特定路径(比如/cogs/{filename}),编写如下规则:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    # 匹配所有COG文件所在路径
    match /cogs/{filename} {
      # 仅允许携带Range请求头的GET请求
      allow get: if request.headers.range != null;
    }
  }
}

关键说明

  • 请求头在规则中以小写形式存在:不管客户端发送的是Range还是range,规则里都用request.headers.range访问,因为GCS会统一将头名称转为小写处理。
  • 基础检查足够满足需求:你提到不在意通过构造范围请求下载完整文件,所以只需检查Range头存在即可。如果需要更严格的格式校验,可添加正则匹配:
    allow get: if request.headers.range != null && request.headers.range.matches('^bytes=\\d+-\\d*$');
    

测试方法

由于Firebase规则游乐场无法模拟自定义HTTP请求头,需用实际HTTP工具测试:

  • 允许的请求(带Range头):
    curl -H "Range: bytes=0-1023" https://storage.googleapis.com/[你的桶名]/cogs/[目标文件名]
    
    会返回206 Partial Content响应。
  • 被拒绝的请求(不带Range头):
    curl https://storage.googleapis.com/[你的桶名]/cogs/[目标文件名]
    
    会返回403 Forbidden响应,符合过滤需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:45:29