gpt4 book ai didi

firebase - 调用Firebase的 "Bad request"方法时如何防止 `.onCall()`?

转载 作者:行者123 更新时间:2023-12-02 19:33:58 27 4
gpt4 key购买 nike

我刚刚升级为使用 Firebase Cloud Functions v1.x。根据this answer

Callable functions are exactly the same as HTTP functions

考虑到这一点,我尝试转换我的 1.x 之前的模拟代码:

export const myHttpAction = functions.https.onRequest((req, res) => {
try {
const result = await myHttpActionWorker(req.body);
return res.send({ status: 'OK' });
} catch (err) {
console.error(err);
return res.status(500).send({ status: 'Server error' });
}
});

以下内容:

export const myHttpAction = functions.https.onCall(async (data, context) => {
console.log(context.auth);
try {
const result = await myHttpActionWorker(data);
return { status: 'OK' };
} catch (err) {
console.error(err);
return { status: 'Server error' };
}
});

但是,在使用 1.x 之前版本中使用的相同数据提交到我的端点 /myHttpAction 后,我得到以下结果:

{
"error": {
"status": "INVALID_ARGUMENT",
"message": "Bad Request"
}
}

我不确定为什么请求是“坏的”,因为它是完全相同的,并且可调用函数是“完全相同的”。知道什么能带来什么吗?

我的 package.json 指定 "firebase-functions": "^1.0.1"

最佳答案

您误解了“完全相同”的含义(并忽略了答案的全部其余部分!)。它们在安全性方面是相同的(正如最初的问题所问的那样),因为可调用函数一个 HTTP 函数,并且在幕后有由可调用客户端 SDK 管理的额外内容。答案列出了这些差异。这些差异对安全性没有任何影响。但您不能简单地将可调用函数替换为 HTTP 函数,并期望现有调用者的一切都相同。

如果您想在不使用客户端 SDK 的情况下调用可调用函数,则必须遵循其协议(protocol)规范。有关该内容的文档即将发布,但您可以在此处获取基础知识:

How to call Firebase Callable Functions with HTTP?

关于firebase - 调用Firebase的 "Bad request"方法时如何防止 `.onCall()`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49930704/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com