我有以下dart代码:
const String _csvFolder = "CSV_files/";
const String _reportFolder = "Report_files/";
Future<bool> writeFiles(
String uuid, Uint8List csvBytes, Uint8List reportBytes) async {
Reference csvFileRef = FirebaseStorage.instance.ref(_csvFolder + uuid);
Reference reportFileRef = FirebaseStorage.instance.ref(_reportFolder + uuid);
try {
await csvFileRef.putData(csvBytes);
await reportFileRef.putData(reportBytes);
var test = await FirebaseStorage.instance.ref(_csvFolder + uuid).getData();
return true;
} catch (ex) {
return false;
}
}
以及以下公共firebase存储规则:
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if true;
}
}
}
台词
await csvFileRef.putData(csvBytes);
await reportFileRef.putData(reportBytes);
我可以看到我的存储中的文件。但是
var test = await FirebaseStorage.instance.ref(_csvFolder + uuid).getData();
失败,并出现XMLHttpRequest异常。
但是如果我像在https://stackoverflow.com/a/74783428/11244991中看到的那样运行flutter run -d chrome --web-browser-flag "--disable-web-security"
,那么它就可以工作。
所以如果我理解得很好的话,这应该是CORS规则的问题。有什么解决方案吗?
1条答案
按热度按时间klh5stk11#
我需要使用cors.json文件按照以下文档配置我的CORS规则:
https://firebase.google.com/docs/storage/web/download-files#cors_configuration