我有两个云函数来做一些简单的簿记工作。
handleUserIn 保留用户登录的痕迹,handleUserOut 保留用户注销的痕迹。
下面是两个函数的代码:
import {onRequest} from "firebase-functions/v2/https";
import * as admin from "firebase-admin";
admin.initializeApp();
exports.handleUserIn = onRequest(
{cors: ["*"]},
(request, response) => {
const userId = request.params[0];
handleUserTrace(userId, "Log-In");
response.status(200).send("All seems OK.");
}); /* End of handleUserIn */
export const handleUserOut = onRequest({cors: ["*"]}, (request, response) => {
response.set("Access-Control-Allow-Origin", "*");
response.set("Access-Control-Allow-Methods", "GET, POST");
const userId = request.params[0];
// corsHandler(request, response, async () => {
handleUserTrace(userId, "Log-Out");
response.status(200).send("All seems OK.");
// }); // End corsHandler.
}); /* End of handleUserOut */
现在我的问题来了。尽管这两个函数都按预期完成了工作,但当我测试它们时;我在网络浏览器的开发者控制台中收到一些烦人的消息。
就像下面这个:
GET
https://handleuserout-vzu8tf4c5q-uc.a.run.app/xyxCIPDXZXgiR6DsjWx3yFOuXYZ4
[HTTP/2 500 365ms]
GET
https://handleuserout-vzu8tf4c5q-uc.a.run.app/xyxCIPDXZXgiR6DsjWx3yFOuXYZ4
Status
500
VersionHTTP/2
Transferred370 B (21 B size)
Referrer Policystrict-origin-when-cross-origin
Request PriorityHighest
DNS ResolutionSystem
我怀疑我在 CORS 方面做错了什么,但我对此没有信心。
有人知道问题出在哪里以及我该如何解决它吗?
更多信息。
这是我用来调用云函数handleUserIn的本地代码:
const handleUserIn = (usrid:string) => {
var xhr = new XMLHttpRequest();
const fnUrl = "https://handleuserin-abc3du7e9q-uc.a.run.app/" + usrid
xhr.open("GET", fnUrl);
xhr.send();
} /* End of handleUserIn */
我做了类似的事情来调用handleUserOut。
首先,我建议删除 JSON.stringify 和 JSON.parse 的使用。他们在这里没有增加任何价值。
您(在编辑之前)向客户发送了如下回复:
response.send(0);
数字 0 并不是 Express 理解的理性反应。您应该向调用者发送实际的 HTTP 状态代码,指示函数的成功或失败级别。请参阅 response.send() 的文档。