【发布时间】:2017-11-25 18:14:33
【问题描述】:
我正在使用 firebase 云功能,第一次看到 cors 然后将 origin 设置为 true.. 但这样任何人都可以访问我的功能,所以我寻找了一种只允许特定域访问我的云功能的方法,我从cors github页面获取了代码并尝试了,但是在等待和等待之后却意外关闭了连接。
这是我的函数 index.js --
const functions = require('firebase-functions');
const cors = require('cors');
var whitelist = ['http://example1.com', 'http://example2.com']
var corsOptionsDelegate = function (req, callback) {
var corsOptions;
if (whitelist.indexOf(req.header('Origin')) !== -1) {
corsOptions = { origin: true } // reflect (enable) the requested origin in the CORS response
}else{
corsOptions = { origin: false } // disable CORS for this request
}
callback(null, corsOptions) // callback expects two parameters: error and options
}
exports.api = functions.https.onRequest((req, res) => {
cors(req, res, () => {
var d = new Date();
var n = d.getHours();
if (n > 8 && n < 17) {
res.status(200).send("Get started")
} else {
res.status(200).send("Closed")
}
})
});
【问题讨论】:
-
您正在定义一个名为 corsOptionsDelegate 的函数,但您没有对它做任何事情。在我看来,函数必须在某个地方传递。
-
好的,但我是新手,我不知道该怎么做,或者是否有办法只允许经过身份验证的用户访问
-
您可以使用 Authentication headers 只允许经过身份验证的用户访问该功能,请参阅此处的答案:stackoverflow.com/a/43239529/8209335
-
除了通常的“可能重复”评论之外,您是否得到过答案......
标签: javascript firebase google-cloud-functions