我在多区域“ europe-west”中托管了firebase,在“ europe-west1”中具有firebase功能。 onRequest函数似乎工作正常,但是我所有的onCall函数都会抛出一般的CORS错误:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
日志中无用。
功能示例:
export const ADMIN01AddStaffClaim = functions
.region('europe-west1')
.https.onCall((data, context) => {
if (context.auth) {
if (context.auth.token.owner !== true) {
let error = new HttpsError('permission-denied', 'You must be an app owner to add staff claims');
return { error };
} else {
const email = data.email;
return grantClaim(email, 'staff')
.then(() => {
return { result: 'Added ' + 'staff' + ' claim to ' + email };
})
.catch(err => {
console.log(err);
let error = new HttpsError(
'permission-denied',
'You must be an app owner to add staff claims'
);
return { error };
});
}
} else {
let error = new HttpsError('permission-denied', 'You must be an app owner to add staff claims');
return { error };
}
});
我尝试使用express的cors,但是根据我在文档中所读的内容,它无法与可调用函数一起使用。
编辑:对于那些删除了angular标签并添加了javascript的人来说,我的代码中实际上只有字面量的打字稿,这是来自angular的问题,通过正常的浏览器请求工作。
EDIT2:之所以抛出该错误,并不是因为实际的CORS问题,而是因为我的功能很糟糕。
答案 0 :(得分:0)
我没有从函数中正确返回任何东西,并且似乎默认情况下,当浏览器发出OPTIONS请求时,CORS错误是失败的第一点。如果不是因为CORS错误,当我调用该函数时,它将是实际的500 Internal Server Error。