繁体   English   中英

如何根据 HTTP 标头过滤对 Google Cloud Storage 的请求?

[英]How can I filter requests to Google Cloud Storage depending on their HTTP headers?

我的用例是我在谷歌云存储上有相当大的文件(>2GB,这些是云优化的 Geotiffs),可以通过 HTTP 范围请求在应用程序中使用。

我想过滤掉缺少范围 header 的请求。

这将避免用户下载整个文件的情况。 (我想有人仍然可以通过一些工作对整个文件提出范围请求,但我并不担心这一点。)

文档 ( https://firebase.google.com/docs/storage/security/rules-conditions#request_evaluation ) 说“还包括 HTTP 标头和身份验证 state”,所以我希望能够在安全规则。

有可能吗?如果有,怎么办?

我找不到在安全规则条件中使用 HTTP 标头的任何示例。 我也尝试过 Firebase 中的规则游乐场,但没有弄清楚如何访问请求标头。

似乎没有任何方法可以访问 HTTP 标头。 唯一的request变量是文档中的变量

您可以尝试使用请求中存在的查询参数填充request.params变量

例如。 <firebase storage url>?myParam=true -> request.params.myParam == "true"应该有效

不,不可能根据 HTTP 标头过滤请求。

安全规则中的request变量不包含 HTTP 标头。 (正如 firebaser 在 Roopa M 的回答的评论中所述。)自提出这个问题以来,文档已经更新,并且不再 state 包含此信息。

Roopa M 的答案给出了一种基于查询参数过滤请求的想法,这可能对您有所帮助,但独立于 HTTP 标头。

为了真正在 firebase 的上下文中根据 HTTP 标头处理查询,可能需要依赖云 function 作为中间件。 如果我没记错的话,这些可以访问完整的 HTTP 请求。

或者,如果您可以选择在这样的环境中构建您的项目,这种规则应该相当容易在像 Nginx 这样的常规 web 服务器中实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM