是否可以阻止 Web 客户端在有权上传到 Google Cloud Storage 时设置 Cache-Control?
Is it possible to prevent web clients from setting Cache-Control when they have permission to upload to Google Cloud Storage?
客户端正在调用 ref.put(file, metadata)
以上传图像。 cacheControl
是 SettableMetadata
定义的一部分,可以传递给 put
和 updateMetadata
。有没有办法禁止客户设置这个?我知道我可以用云函数异步更新它,但客户端可以稍后调用 updateMetadata
,如果我有一个云函数触发元数据更新来更新元数据,它会进入无限循环(在模拟器中测试)。
如果用户能够直接在 Firebase 存储中上传文件,则假定他们也有定义元数据的权限。您可以设置一个云功能来编辑元数据 post 上传或直接从云功能处理您的上传。这完全取决于您在应用程序中的流程。
一个解决方案是有一个用户上传到的专用目录,云功能将文件迁移和处理到另一个目录,这将防止用户更新元数据。
您始终可以通过以下方式在客户端应用程序中实施它:
/ Create a reference to the file whose metadata we want to change
var forestRef = storageRef.child('images/forest.jpg');
// Create file metadata to update
var newMetadata = {
cacheControl: 'public,max-age=300',
contentType: 'image/jpeg'
};
// Update metadata properties
forestRef.updateMetadata(newMetadata)
.then((metadata) => {
// Updated metadata for 'images/forest.jpg' is returned in the Promise
}).catch((error) => {
// Uh-oh, an error occurredd!
});
来源:https://firebase.google.com/docs/storage/web/file-metadata#update_file_metadata
客户端正在调用 ref.put(file, metadata)
以上传图像。 cacheControl
是 SettableMetadata
定义的一部分,可以传递给 put
和 updateMetadata
。有没有办法禁止客户设置这个?我知道我可以用云函数异步更新它,但客户端可以稍后调用 updateMetadata
,如果我有一个云函数触发元数据更新来更新元数据,它会进入无限循环(在模拟器中测试)。
如果用户能够直接在 Firebase 存储中上传文件,则假定他们也有定义元数据的权限。您可以设置一个云功能来编辑元数据 post 上传或直接从云功能处理您的上传。这完全取决于您在应用程序中的流程。
一个解决方案是有一个用户上传到的专用目录,云功能将文件迁移和处理到另一个目录,这将防止用户更新元数据。
您始终可以通过以下方式在客户端应用程序中实施它:
/ Create a reference to the file whose metadata we want to change
var forestRef = storageRef.child('images/forest.jpg');
// Create file metadata to update
var newMetadata = {
cacheControl: 'public,max-age=300',
contentType: 'image/jpeg'
};
// Update metadata properties
forestRef.updateMetadata(newMetadata)
.then((metadata) => {
// Updated metadata for 'images/forest.jpg' is returned in the Promise
}).catch((error) => {
// Uh-oh, an error occurredd!
});
来源:https://firebase.google.com/docs/storage/web/file-metadata#update_file_metadata