【发布时间】:2019-07-26 20:03:30
【问题描述】:
您好 StackOverflow 和 Firebase 社区!
我正在尝试实现 Firebase 可能不具备的功能:我想在 Firebase 存储中存储 HTML 文件夹(在我的例子中是横幅广告)。
我的问题是:如何保持我的 HTML 文件到相关 JS 和图像文件的相对路径。
所以这些文件可以很容易地找到彼此:
/path/to/my/folder/index.html
/path/to/my/folder/main.js
/path/to/my/folder/picture.jpg
<html>
...
<script src="main.js">
...
</html>
document.onload = function() {
myImage.src = 'picture.jpg'
}
如果我将所有文件都存储在 Firebase 存储上,并使用它们的 DownloadURL 访问它们,这些相对 URL 将不起作用,看起来像 https://firebasestorage.googleapis.com/v0/b/my-project.appspot.com/o/my_folder_300x250%2Findex.html?alt=media&token=12a123a1-1234-1a1a-1234-a1ab123456a1,
我可以通过打开 Firebase 的安全规则使文件无需令牌即可访问,但由于 URL 参数和文件夹路径被转义,相对路径仍然损坏。
我还设法通过公开 Google Cloud Storage 存储分区,使其在另一个项目中发挥作用。我可以使用如下 URL 访问文件并保留相对路径:https://my-project.appspot.com.storage.googleapis.com/path/to/my/folder/my_folder_300x250/index.html。这很好用,但有我想防止的主要安全漏洞,比如列出存储桶中的所有文件????
我尝试将横幅保存为 zip 文件,在前端解压缩它们,然后使用 FileSystem API 在浏览器中重新创建文件夹结构。但我仅限于 Chrome。
我也可以尝试替换我的 HTML、JS 和 CSS 文件中的所有 URL,但这并不是一个好的解决方案。
【问题讨论】:
标签: firebase google-cloud-storage firebase-storage firebase-security banner