我目前正在学习如何为 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)一开始完全错过的。
response.status(500)
response.status(200)
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 }) });