Javascript 了解Firebase存储令牌
我试图了解代币在Firebase存储中是如何工作的 每当我的web应用程序将图像上载到FS时,它都会向其公共url添加一个标记。问题是,每当您将同一图像文件上载到web应用程序的另一部分时,您似乎不会获得另一个文件,而是已上载的文件url的不同标记,从而导致先前注册的图像显示出现403错误 有办法解决这个问题吗 例如:Javascript 了解Firebase存储令牌,javascript,firebase,firebase-storage,Javascript,Firebase,Firebase Storage,我试图了解代币在Firebase存储中是如何工作的 每当我的web应用程序将图像上载到FS时,它都会向其公共url添加一个标记。问题是,每当您将同一图像文件上载到web应用程序的另一部分时,您似乎不会获得另一个文件,而是已上载的文件url的不同标记,从而导致先前注册的图像显示出现403错误 有办法解决这个问题吗 例如: storageRef.put(picture.jpg); uploadTask.snapshot.downloadURL // returns something like h
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
storageRef.put(picture.jpg);
uploadTask.snapshot.downloadURL
//返回类似于https://firebasestorage.googleapis.com/v0/b//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">
/o/picture.jpg?alt=media&token=09cb2927-4706-4e36-95ae-2515c68b0d6e”>
如果用户重复此过程并在应用程序的另一部分上载相同的picture.jpg,而不是在Firebase存储中获取全新副本,则该文件将被以新令牌结尾的URL覆盖;例如12345
因此:
//新上传效果良好
//但是旧的上传由于错误的url而中断
令牌对于特定版本的上载是唯一的。如果您使用新内容覆盖文件,则将使用新的不可用url生成新令牌
因此,换句话说,令牌对于特定blob是唯一的——它们不是每个存储位置唯一的。我们这样做是为了提高安全性,以确保开发人员和最终用户不会意外地公开他们不打算公开的数据
但是,您可以使用我们的JSSDK将存储位置(“gs://mybucket/myfile.png”)转换为下载url。这样,您可以根据需要传递gs uri,并在将其放置到图像中后将其转换为完整url
请参阅:有关公共文件上载的信息:如果您在firebase函数中上载文件,则需要调用
makePublic()
,以便在没有有效令牌的情况下访问引用对象。使用图像的本地缓存这是一个web应用程序,即使文件相同,每个图像都需要自己的url。抱歉,我认为它是移动应用程序,因为我没有指出这一点。已编辑。你指的是什么类型的令牌?你能添加吗?通常为cl这使我们可以更有效地帮助您。“不可用的url”这有多安全?有人可以强行进入url吗?谢谢!
<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