似乎 CORS 错误是网络领域的众所周知的问题。但是我有史以来第一次尝试了 flutter web,我遇到了严重的错误。
下面的代码在 iOS 设备上运行时在应用程序版本中运行良好,但是当我在 Chrome 上使用 beta 通道的网络调试测试相同的代码时,它遇到了 CORS 错误。
其他 stackoverflow 答案解释了如何使用其项目的服务器端文件解决 CORS 问题。但我完全不知道什么是服务器问题以及如何处理他们的答案。来自 Chrome 控制台的错误消息如下
[从源 'http://localhost:52700' 访问 XMLHttpRequest at 'https://kapi.kakao.com/v1/payment/ready' 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。]
所以,我想要做的是仅使用 DART 代码解决上面的“Access-Control-Allow-Origin 标头”问题!下面的代码是我尝试仅使用 main.dart 解决这些问题的代码。
onPressed: () async {
var res =
await http.post('https://kapi.kakao.com/v1/payment/ready', encoding: Encoding.getByName('utf8'), headers: {
'Authorization': 'KakaoAK $_ADMIN_KEY',
HttpHeaders.authorizationHeader: 'KakaoAK $_ADMIN_KEY',
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "POST, GET, OPTIONS, PUT, DELETE, HEAD",
}, body: {
'cid': 'TC0ONETIME',
'partner_order_id': 'partner_order_id',
'partner_user_id': 'partner_user_id',
'item_name': 'cool_beer',
'quantity': '1',
'total_amount': '22222',
'vat_amount': …Run Code Online (Sandbox Code Playgroud) 我是连接了 firebase 的 flutter 用户。
当用户调用搜索功能然后提交字符串时,我尝试使用 querysnapshot 调用 cloud firestore 中的用户列表。我尝试过的代码片段如下:
Future<QuerySnapshot> allUsers = usersReference
.where("profileName",
isGreaterThanOrEqualTo: str)
.getDocuments();
setState(() {
futureSearchResults = allUsers;
});}
Run Code Online (Sandbox Code Playgroud)
问题是我必须使 querysnapshot 调用的“profileName”“不区分大小写”。例如, cloud firestore 中的profileName 'HELLO WORLD' 必须在我的 android studio flutter 控制台中打印为 'hello world'。所以我需要一个 flutterFire 方法将所有大写字符从云 firestore 转换为小写字符。不幸的是,我找不到简单的属性来从 flutterFire 插件设置不区分大小写..]:
此外,我试图从 firestore 调用的不是一堆字符串,而是某种形式的文档,它将转换为用 dart 编写的某些自定义类。它让我无法使用像 toLowerCase() 这样简洁的 dart 方法。
如果有人知道 dart 代码中将大写字符从 cloud firestore 更改为小写的方法,请分享您的知识。
清晰的答案非常感谢!先感谢您 [:
众所周知,firebase rtdb 的读/写成本是免费的。通过更多的挖掘,我可以发现读/写实际上会以非直接方式产生成本。好吧,所以我一直在搜索文档和SO问题,以找出“FIRESTORE阅读成本(每100,000个文档0.06美元)和实时数据库下载成本(1美元/GB)之间的确切区别是什么”,但遗憾的是我不能'没有设法完成它。
RTDB 的存储数据成本(5 美元/GB)非常清楚,而且我知道每月收取的价格(这是真的,对吧?)。但下载成本究竟是多少?通过一些SO问题和官方文档,我可以发现rtdb下载成本与firestore读取成本非常相似,并且通过深入研究最终路径来明确指定db.ref路径非常重要。但是,如果下载成本全部与这些操作有关,例如读取特定字段或路径中的 json 数据,那么 firestore 读取的概念和这些 rtdb 下载操作的概念有什么区别?
如果所有这些事情已经在地球上发生,那么 RTDB 在“概念阅读”方面的成本就永远不会是免费的,即使我们直接说话。那么为什么一些社区成员和文章总是说“RTDB的读/写成本是免费的”?我正在考虑将某些功能从 firestore 迁移到 RTDB,因为众所周知 rtdb 是免费读写的。该功能每月更新数百次 500B 大小的单个路径(firestore 的文档)。但这个问题确实让我很困惑。
假设 firestore 的 100,000 次读取为 0.04 美元,RTDB 的下载(看起来像是读取)为 1 美元/GB。根据我的计算,从 firestore 读取 2,500,000 个文档相当于从 RTDB 下载一个 GB。这意味着,如果单个操作读取大于 400B(大约)的一堆数据,firestore 读取成本甚至比 RTDB 读取成本更便宜。那么如果单次操作需要检索大于400B的数据,我就没有理由使用RTDB来读取数据。感觉好像陷入了错误的观念,但要走出这个沼泽并不容易..]:
所以我希望弄清楚RTDB读/写成本(如果它本身真的免费的话),以及当应用程序必须执行大量读取操作时使用RTDB比firestore更好的原因(对我来说) ,例如每个用户每月大约 1,000 次操作检索 400B 大小的数据)。据我所知,一些 Firebase 专家正在贡献 SO 的 firebase 标签。我试图尽可能清楚地写出问题,但认为问题中会有一些不清楚的部分。因此,我们将非常感谢您的评论!希望这个问题能够传达给您..提前致谢[:
我最近考虑了 Firebase 服务的各种安全问题,并遇到了一个与 Firebase 定价相关的有趣问题。问题很简单如下:
如果实时数据库的一组安全规则在安全规则的验证过程中读取其自身(rtdb)内部的一些数据,那么这种用于验证目的的服务器读取是否受到rtdb计费的任何部分的影响?例如,如果一行规则需要匹配 rtdb 的 json 树中的“角色”数据,则此类验证是否不受 rtdb 定价的下载费用($1/GB)或连接配额(同时连接 200,000)的影响?这可能是真的,因为验证无论如何都必须读取数据以查明请求是否符合规则。
如果一组cloud firestore的安全规则在安全规则的验证中读取其自身(firestore)内部的一些数据,这种用于验证的数据读取是否需要支付firestore的读取操作费用(洛杉矶地区每100,000个文档0.036美元)?例如,要验证一行allow read if resource.data.visibility == 'public',规则必须检索数据,就像移动客户端在没有任何安全规则的情况下读取此类数据一样。
希望这个问题能够得到社区的专家们的解答!先感谢您 [:
firebase-security firebase-realtime-database google-cloud-firestore
我正在使用 url_launcher 在我的应用程序中发送带有系统电子邮件的电子邮件。我正在使用下面的代码,这个人做得很好。
void launchEmailSubmission() async {
final Uri params = Uri(
scheme: 'mailto',
path: 'myOwnEmailAddress@gmail.com',
);
String url = params.toString();
if (await canLaunch(url)) {
await launch(url);
} else {
print('Could not launch $url');
}
}
Run Code Online (Sandbox Code Playgroud)
但是现在我想在邮件正文框中为其提供“默认”主题和提示文本(如果提示文本不可能,则为普通文本)。
有没有办法做到这一点?
我终于完成了我自己的第一个 flutter 应用程序的构建,非常感谢 SO。但我仍然有一个关于在其他设备上测试我的 flutter apk 的问题。所以,最后我得到了“app-release.apk”、“app.apk”和其他一些与 apk 相关的文件。很兴奋,我将这些文件发送给我的朋友,但朋友告诉我该应用程序已下载完毕,但无法打开。那么问题来了!是否有任何额外的基本命令可以在真实的 Android 设备上成功打开 apk 文件?如果是这样,真的没有办法在我朋友的 Android 设备上安装并成功打开和使用 .apk 或 .aab flutter 应用程序吗?我想在谷歌审核完成之前在朋友的设备上测试我的应用程序!先感谢您 [:
我从去年秋天开始就是 flutter-fire 用户
注意:服务器客户端库绕过所有 Cloud Firestore 安全规则,而是通过 Google 应用程序默认凭据进行身份验证。如果您使用服务器客户端库或 REST 或 RPC API,请确保为 Cloud Firestore 设置身份和访问管理 (IAM)。
上面的评论来自firebase 团队的链接。听起来评论中的“服务器客户端库”或 api 意味着来自我的移动应用程序外部的请求,并且它们会绕过云 Firestore 安全规则。但是,当我在未经许可的情况下尝试使用 Postman 与我的应用程序中的请求进行相同的获取请求时,Postman 控制台中的响应很好,这意味着出现了权限被拒绝错误。
那么,我的问题来了。我希望知道哪些类型的请求到底相当于官方参考文献中提到的这些绕过所有安全规则的“服务器客户端库”或“REST 或 RPC API”。Postman 正是“REST”,在这种情况下,firebase 完美地按照我想要的方式工作(产生了权限拒绝)。因此,Firebase 团队必须要注意一些特定的类型。
我知道 firebase-admin sdk 是可能的服务器端库之一,但是当我们尝试访问 firebase admin sdk 时,应该需要完全相同的权限或身份验证程序,它可以控制高于安全规则的 firebase 数据,就像 firebase 团队评论的那样。因此,问题的重点是攻击者可能在没有适当安全程序的情况下恶意操纵我们的火力点的解决方案。
希望一些 Firebase 专家能够以丰富的知识和经验为这个问题给出很酷的答案!先感谢您 [:
firebase firebase-security flutter firebase-admin google-cloud-firestore