我目前正在学习如何使用新的 Cloud Functions for Firebase,我遇到的问题是我无法访问我通过 AJAX 请求编写的函数。我收到“无‘Access-Control-Allow-Origin’”错误。这是我编写的函数示例:
exports.test = functions.https.onRequest((request, response) => {
response.status(500).send({test: 'Testing functions'});
})
该函数位于此 url 中: 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'});
})
})
我做错了什么?我将不胜感激。
更新:
Doug Stevenson的回答有帮助。添加 ({origin: true})
解决了这个问题,我还必须将 response.status(500)
更改为 response.status(200)
一开始我完全错过了。
最佳答案
有两个sample functions由 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
})
});
关于javascript - 在 Cloud Functions for Firebase 中启用 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42755131/