【问题标题】:Firebase callable functions giving me CORS issueFirebase 可调用函数给了我 CORS 问题
【发布时间】:2019-11-28 22:37:36
【问题描述】:

我一直在尝试可调用函数以避免手动处理 cors,但到目前为止没有任何效果

我读过类似的问题Firebase Callable Function + CORS

不同之处在于这家伙有“没有访问控制允许来源”的问题。我的是对预检...问题的回应

我想请求指导的人。好郁闷啊。。

我正在使用 Blaze 计划

到目前为止,我一直在尝试仅在本地运行这些功能。我根本没有部署该功能。

这是我的功能代码

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp();


exports.createOrder = functions.https.onCall((data, context) => {
return new Promise((resolve, reject) => {
    resolve(data)
        .then(result => {
            return result;
        })
        .catch(err => {
            console.error(err.code);
            throw new functions.https.HttpsError('unknown', err.message);
        });
});

}); 这是我的客户代码

export const createOrder = order => {
    functions
        .httpsCallable('createOrder')({ data: order })
        .then(result => {
            console.log('result create order is', result);

            return result;
        });
};

函数包.json

{
    "name": "functions",
    "description": "Cloud Functions for Firebase",
    "scripts": {
        "serve": "firebase serve --only functions",
        "shell": "firebase functions:shell",
        "start": "npm run shell",
        "deploy": "firebase deploy --only functions",
        "logs": "firebase functions:log"
    },
    "dependencies": {
        "@sendgrid/mail": "^6.4.0",
        "axios": "^0.19.0",
        "cors": "^2.8.5",
        "firebase": "^6.3.1",
        "firebase-admin": "^8.2.0",
        "firebase-functions": "^3.1.0",
        "firebase-functions-test": "^0.1.6"
    },
    "engines": {
        "node": "8"
    },
    "private": true
}

firebase config.json

"firebase": {
            "apiKey": "AIzaSy*****",
            "authDomain": "jokii-test.firebaseapp.com",
            "databaseURL": "https://jokii-test.firebaseio.com",
            "projectId": "jokii-test",
            "storageBucket": "jokii-test.appspot.com",
            "messagingSenderId": "104544.....",
            "appId": "1:10454485....."
        }

Firebase SDK = "firebase": "^6.3.1",

【问题讨论】:

  • 部署后功能是否有效?曾经有过类似的问题,现在我测试我部署的功能。如果有人知道解决方案会很好,但目前这可能会帮助您继续处理您的项目。
  • @Sebe 一旦我部署了函数@@,它就起作用了

标签: firebase google-cloud-functions firebase-hosting


【解决方案1】:

客户端 SDK 不知道如何访问尚未部署的功能。请注意,在错误输出中,它尝试访问的 URL 是您完全部署的函数的 URL。目前无法让它覆盖 URL 以访问您在 localhost 上本地运行的 URL。

如果您想在本地调用您的可调用函数,您需要实现一个遵循protocol specification for callable functions 的客户端。而且,正如您所见,这将是相当多的工作,因为客户端 SDK 正在为您管理大量 HTTP 协议工作。

【讨论】:

  • 我明白了.. 我没有读过那部分。感谢您澄清问题道格。您在 youtube 上的 firebase 视频帮助很大:)
猜你喜欢
  • 2018-10-21
  • 2020-07-07
  • 2022-01-20
  • 2020-05-13
  • 2018-10-31
  • 2021-01-18
  • 2019-03-10
  • 1970-01-01
  • 2019-03-26
相关资源
最近更新 更多