【发布时间】:2021-12-12 04:51:19
【问题描述】:
我一直在尝试调用 Firebase Cloud Function,但没有成功。
成功部署的函数是:
functions.logger.info("Hello logs!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); // this logs
exports.createAuthToken = functions.https.onRequest((request, response) => {
functions.logger.info("Hello logs!", { structuredData: true }); // this doesn't log
response.send("Hello from Firebase!");
});
第一行代码显示在日志中,但第三行在从外部 Web 客户端调用时不显示。当我从 Google Cloud 控制台测试/运行该功能时,两个日志都会显示。
在 Web 客户端中,我收到错误消息:
从源“https://my-client-url”访问“https://us-central1-my-project.cloudfunctions.net/create-auth-aoken?ot-auth-code=xyz”获取' 已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。
所以我按照文档的建议解决了 cors 问题:
const cors = require('cors')({
origin: true,
});
functions.logger.info("Hello logs!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); // this logs
exports.createAuthToken = functions.https.onRequest((request, response) => {
cors(request, response, () => {
functions.logger.info("Hello logs >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!", { structuredData: true }); // this still doesn't
response.send("Hello from Firebase!");
});
});
我这样调用函数:
https://us-central1-my-project.cloudfunctions.net/create-auth-token?ot-auth-code=${code}&id-token=${token}
我已经尝试用我能找到的所有方法来解决 cors 问题,但它不起作用。
我应该如何准确地配置它以使其工作?
【问题讨论】:
-
你可以尝试做
return cors(request, response, () => {...}(即添加return)吗? -
感谢@RenaudTarnec,虽然我刚刚测试过,但没有任何改变
标签: node.js firebase google-cloud-functions