Firebase:云功能和CORS中的身份验证

时间:2018-06-15 09:52:47

标签: javascript firebase authentication cors google-cloud-functions

尝试使用firebase云功能设置自定义身份验证,但在从localhost发送请求时遇到一些CORS问题。

这是auth功能

exports.auth = functions.https.onRequest(function (request, response) {
    cors(request, response, function() {
        const uid = request.body.uid;
        admin.auth().createCustomToken(uid)
            .then(function(customToken) {
                response.status(200).send(customToken);
            })
            .catch(function(error) {
                response.send("Error creating custom token:", error);
            });
    });
});

这是来自客户端的函数调用

let auth = firebase.functions().httpsCallable('auth');
auth({uid: 'some-random-uid'})
    .then(function(result) {
        console.log(result);
    }).catch(function(error) {
        console.log(error);
    });

应用程序在https //:localhost:8080

的节点http-server下本地运行

错误是 请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“https://localhost:8080”访问。响应具有HTTP状态代码500.如果不透明响应满足您的需要,请将请求的模式设置为“no-cors”以获取禁用CORS的资源。

我在没有auth逻辑的情况下测试了类似的请求,一切正常。

我在谷歌控制台添加了https://localhost:8080作为允许的http-refferer(浏览器密钥(由Google服务自动创建))。

我比较了auth和non-auth请求的请求和响应。似乎第一个OPTIONS请求在两种情况下都有效。但是第二个使用auth逻辑运行的请求会删除access-control-allow-origin:* header并抛出错误。

有什么想法吗?

0 个答案:

没有答案