Angular 8 + @ angular / fire onCall函数没有CORS标头存在错误

时间:2019-07-04 16:41:10

标签: angular firebase cors google-cloud-functions angularfire2

我在多区域“ 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问题,而是因为我的功能很糟糕。

1 个答案:

答案 0 :(得分:0)

我没有从函数中正确返回任何东西,并且似乎默认情况下,当浏览器发出OPTIONS请求时,CORS错误是失败的第一点。如果不是因为CORS错误,当我调用该函数时,它将是实际的500 Internal Server Error。