尝试使用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并抛出错误。
有什么想法吗?