javascript - 了解 Firebase 存储 token

标签 javascript firebase firebase-storage

我正在尝试了解 token 在 Firebase 存储中的工作原理。

每当我的网络应用程序将图像上传到 FS 时,它都会向其公共(public) url 添加一个 token 。问题是每当您将相同的图像文件上传到网络应用程序的另一部分时,似乎您没有得到另一个文件,而是已经上传的文件 url 的不同标记,从而为前一个呈现 403 错误注册图像显示。

有办法解决吗?

示例:

storageRef.put(picture.jpg);
uploadTask.snapshot.downloadURL 
// returns something like https://firebasestorage.googleapis.com/v0/b/<your-app>/o/picture.jpg?alt=media&token=09cb2927-4706-4e36-95ae-2515c68b0d6e

然后该 url 显示在 img src 中的某处。

<img src="https://firebasestorage.googleapis.com/v0/b/<your-app>/o/picture.jpg?alt=media&token=09cb2927-4706-4e36-95ae-2515c68b0d6e">

如果用户重复该过程并在应用的另一部分上传相同的 picture.jpg,而不是在 Firebase 存储中获得全新的副本,文件将被以新 token 结尾的 URL 覆盖;比如说 12345。

所以:

 <img src="https://...picture.jpg?alt=media&token=12345"> // New upload renders fine
 <img src="https://...picture.jpg?alt=media&token=09cb2927-4706..."> // But old upload breaks because of wrong url

最佳答案

token 对于特定版本的上传是唯一的。如果您用新内容覆盖该文件,则会生成一个新 token ,其中包含一个新的不可猜测的 url。

换句话说, token 对于特定的 blob 是唯一的——它们不是每个存储位置唯一的。我们这样做是为了加强安全措施,以确保开发人员和最终用户不会意外泄露他们不希望泄露的数据。

但是,您可以使用我们的 js SDK 将存储位置(“gs://mybucket/myfile.png”)转换为下载 url。这样,您可以根据需要传递 gs uri,并在您想将其放入图像后将其转换为完整的 URL。

参见:https://firebase.google.com/docs/reference/js/firebase.storage.Reference.html#getDownloadURL

关于javascript - 了解 Firebase 存储 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39293781/

相关文章:

file-upload - 用于 firebase_storage 的 Flutter OnProgressListener?

javascript - 运行 node.js 的问题

javascript - 如何从 rxjs from(array) 获取数组

html - 为什么 Facebook 共享无法获取我的 Firebase 存储镜像文件?

Android Firebase : retrieve All data in ArrayList and randomly select string from that ArrayList

ios - 同步下载 Firebase 存储

android - 尝试从 Firebase 存储加载图像时出现 403 Forbidden 错误

javascript - 我正在尝试使用 jquery 和 ajax 将多个数据发送到另一个页面以检查数据库中是否存在值

javascript - 在单个页面上重复使用 Backbone Marionette 模块

firebase - 如何关闭 firestore 中子集合的自动索引