javascript - Firebase 云功能 - onCall 不起作用

标签 javascript firebase cors google-cloud-functions

我正在测试一个非常简单的实现,如 FB 文档 (https://firebase.google.com/docs/functions/callable) 中所述,但它不起作用。

这是我的 Firebase 函数,部署到云端:

exports.getRecSkills = functions.https.onCall((data, context) => {
  return {text: data.text};
});

...和我的 客户来电 (初始化FB后):
var getRecSkills = firebase.functions().httpsCallable('getRecSkills');

getRecSkills({text: '123'}).then(function(result) {
  console.log(result);
}).catch(function(error) {
  console.log(error.code);
  console.log(error.message);
});

我得到一个与 CORS header 相关的问题,但在文档中,它没有提到对 CORS 的需求......我错过了什么吗?

enter image description here

一些注意事项:
  • 我已经能够执行其他 Firebase 功能(即 HTTPS、
    数据库),所以我不认为是我错误地设置了 Firebase。
  • 更新到最新的 Firebase,所以也不要认为这是一个问题。
  • 给我一个“内部”错误,除了“出现严重错误”之外,API 文档没有帮助。
  • 我似乎无法使该功能正常工作(它一直在给我
    400 错误)通过 shell 进行本地测试时,即使我知道了
    与任何其他数据库和 https 函数一起使用

  • 已经为此苦苦挣扎了一段时间...请帮助!

    最佳答案

    摆脱你的CORS错误,请确保您的 firebase.json有以下 headers :

    "hosting": [
        {
          "headers": [
            {
              "source": "**",
              "headers": [
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                }
              ]
            }
          ]
       }
    ]
    
    如果您在 上运行Firebase 模拟器 在本地设备上,确保您在初始化 Firebase 函数后具有以下内容,否则您的本地设备仍将调用远程 Firebase 函数,您将点击 CORS又报错:
    if (window.location.hostname === "localhost") {
        console.log("localhost detected!");
        firebase.functions().useFunctionsEmulator('http://localhost:5001');
    };
    

    关于javascript - Firebase 云功能 - onCall 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50195817/

    相关文章:

    javascript - 在javascript中传递一个值

    c# - 反序列化来自 firebase 的响应

    javascript - firebase:angularfire 0.8.0 升级在记录中保存 ref.name

    Spring - Resteasy - Cors 双 Access-Control-Allow-Origin header 响应

    javascript - 由于 CORS,无法从 S3 存储桶中获取图像

    javascript - 获取 json 文件时出错

    javascript - 单击按钮时更改图像

    javascript - 网页无法从 Phonegap 中的远程服务器检索数据(但在 Chrome 中工作正常)

    javascript - Php,获取文本框中的值到下一页

    firebase - 使用 bolt 部署规则会添加额外的 "rules"包装器