小编典典

在 Cloud Functions for Firebase 中启用 CORS

all

我目前正在学习如何为 Firebase 使用新的 Cloud Functions,我遇到的问题是我无法访问通过 AJAX 请求编写的函数。我收到“无
‘Access-Control-Allow-Origin’”错误。这是我编写的函数的示例:

exports.test = functions.https.onRequest((request, response) => {
  response.status(500).send({test: 'Testing functions'});
})

该函数位于此网址中: https ://us-central1-fba-
shipper-140ae.cloudfunctions.net/test

Firebase 文档建议在函数中添加 CORS 中间件,我已经尝试过了,但它对我不起作用:https
://firebase.google.com/docs/functions/http-
events

我是这样做的:

var cors = require('cors');

exports.test = functions.https.onRequest((request, response) => {
   cors(request, response, () => {
     response.status(500).send({test: 'Testing functions'});
   })
})

我究竟做错了什么?我将不胜感激。

更新:

回答有所帮助。添加 ({origin: true})解决了这个问题,我也不得不改变response.status(500)response.status(200)一开始完全错过的。


阅读 73

收藏
2022-06-07

共1个答案

小编典典

Firebase 团队提供了两个示例函数来演示 CORS 的使用:

第二个示例使用与您当前使用的不同的方式处理 cors。

考虑像这样导入,如示例所示:

const cors = require('cors')({origin: true});

你的函数的一般形式是这样的:

exports.fn = functions.https.onRequest((req, res) => {
    cors(req, res, () => {
        // your function body here - use the provided req and res from cors
    })
});
2022-06-07