服务器代码
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.hello = functions.https.onCall((data, context) => {
console.log(data.text);
return 123;
});
客户端代码
const myFunc = firebase.functions().httpsCallable('hello');
myFunc({text: 'world'}).then((rslt)=>{
console.log('rslt:', rslt);
});
但这是行不通的。我在客户端浏览器控制台收到错误消息。
从原点访问"https://===skip=/hello"'http://localhost:5000'已被CORS策略阻止:对的响应飞行前请求未通过访问控制检查:重定向未通过允许飞行前请求。
如何解决此问题?我没有在谷歌指南文档中找到解决方案。
我看到评论并添加内容
查询未到达服务器。
如果我在函数部署后尝试,它会正常工作。
但它不会显示在本地控制台上,而是显示在firebase控制台上。
如何拨打本地服务器电话?
每次测试函数时都要进行部署,这太疯狂了。
从给定的代码中很难判断您的请求违反跨来源资源共享的原因。读一读这件事,弄清楚你在HTTP请求中包含了什么(无论是否有意(导致了它。也许是头?
同时,您可以使用require("cors")
:在Firebase函数中启用CORS
const cors = require("cors")({origin: true});
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.hello = functions.https.onCall((data, context) => {
cors(data, context, () => {
console.log(data.text);
res.send("123");
}
});
关于Firebase函数的本地测试,您可以使用以下命令:
firebase serve --only functions
Firebase主机/功能的本地测试
在Firebase函数中启用CORS。