Firebase存储:获取文件相对路径的安全方法?(存储HTML文件)
你好,StackOverflow和Firebase社区 我正试图实现Firebase可能不打算实现的目标:我想在Firebase存储中存储HTML文件夹(在我的例子中是横幅广告) 我的问题是:如何保持从HTML文件到相关JS和图像文件的相对路径 因此,这些文件可以很容易地找到彼此: /路径/to/my/folder/index.html /路径/to/my/folder/main.js /路径/to/my/folder/picture.jpg 如果我将所有文件存储在Firebase存储上,并使用下载的URL访问它们,则这些相对URL不起作用,看起来像Firebase存储:获取文件相对路径的安全方法?(存储HTML文件),firebase,google-cloud-storage,firebase-storage,firebase-security,banner,Firebase,Google Cloud Storage,Firebase Storage,Firebase Security,Banner,你好,StackOverflow和Firebase社区 我正试图实现Firebase可能不打算实现的目标:我想在Firebase存储中存储HTML文件夹(在我的例子中是横幅广告) 我的问题是:如何保持从HTML文件到相关JS和图像文件的相对路径 因此,这些文件可以很容易地找到彼此: /路径/to/my/folder/index.html /路径/to/my/folder/main.js /路径/to/my/folder/picture.jpg 如果我将所有文件存储在Firebase存储上,并使用
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参数和转义的文件夹路径,相对路径仍然被破坏
我还通过将谷歌云存储桶公诸于众使其在另一个项目上成功运行。我可以访问这些文件,并使用如下URL保持相对路径:https://my-project.appspot.com.storage.googleapis.com/path/to/my/folder/my_folder_300x250/index.html
。这很好用,但是有我想要防止的主要安全缺陷,比如列出bucket中的所有文件Firebase存储是围绕云存储构建的,云存储实际上没有目录,而是一个扁平的名称空间。目录是通过存储对象命名约定模拟的:名称可以包含/
字符,并且在对象名称的开头放置一个“目录”路径会使该对象看起来像是在该“目录”中。看见
因此,您唯一的解决方案(如果您希望独立存储文件)是处理所有引用,将“路径”设置为绝对,并相应地命名文件。正如您所观察到的,您可能还需要考虑所有URL查询参数。我找到了一个非常简单的解决方案:
在Google Cloud Console中,我创建了一个新角色,该角色具有get访问权限,但没有列表访问权限,并将其应用于allUsers
,具有以下权限
resourcemanager.projects.get
storage.objects.get
这将暂时解决我的问题,我将继续使用https://my-project.appspot.com.storage.googleapis.com/path/to/my/folder/my_folder_300x250/index.html
而不是firebase的下载URL()
<html>
...
<script src="main.js">
...
</html>
document.onload = function() {
myImage.src = 'picture.jpg'
}