Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase函数无法在将标题发送到客户端后设置标题_Javascript_Node.js_Reactjs_Firebase_Google Cloud Functions - Fatal编程技术网

Javascript Firebase函数无法在将标题发送到客户端后设置标题

Javascript Firebase函数无法在将标题发送到客户端后设置标题,javascript,node.js,reactjs,firebase,google-cloud-functions,Javascript,Node.js,Reactjs,Firebase,Google Cloud Functions,当我试图从客户端调用firebase函数时,我创建了一个firebase函数。发送到客户端后无法设置标头。这是我在认证post请求后出现的后端错误。它看起来像是标题问题 firebase函数代码 import * as admin from 'firebase-admin'; import * as functions from 'firebase-functions'; import cors = require('cors'); const corsHandler = cors({ ori

当我试图从客户端调用firebase函数时,我创建了一个firebase函数。发送到客户端后无法设置标头。这是我在认证post请求后出现的后端错误。它看起来像是标题问题

firebase函数代码

import * as admin from 'firebase-admin';
import * as functions from 'firebase-functions';

import cors = require('cors');
const corsHandler = cors({ origin: true });

export const verifyToken = functions.https.onRequest(
    async (request: functions.Request, response: functions.Response) => {
        corsHandler(request, response, async function () {
            const bearerHeader = request.headers.authorization;
            if (!bearerHeader) {
                response.sendStatus(403);
            }
            try {
                const bearerToken = bearerHeader?.split(' ')[1];
                const decodedToken = await admin.auth().verifyIdToken(bearerToken || '');
                const customToken = await admin.auth().createCustomToken(decodedToken.uid)
                response.status(200).send(customToken);
            } catch (err) {
                response.sendStatus(404);
            }
        });
    },
);
客户端

 async verifyToken(token: string): Promise<void> {
    console.log(token)
    const firebase = FirebaseApiHelper.getInstance()
    const responseData = await firebase.request(
        "verifyToken",
        {},
        {
            "Content-Type": "application/json",
            Accept: "application/json",
            Authorization: "Bearer" +token,
        },
    )
    console.log(responseData)
}
异步验证令牌(令牌:字符串):承诺{ console.log(令牌) const firebase=FirebaseApiHelper.getInstance() const responseData=等待firebase.request( “验证令牌”, {}, { “内容类型”:“应用程序/json”, 接受:“应用程序/json”, 授权:“持票人”+代币, }, ) console.log(responseData) }
您的功能代码无法正确处理丢失的授权标头。在这种情况下,它将首先调用
response.sendStatus(403)
,然后立即调用
response.status(200)
response.sendStatus(404)
,再次尝试设置标题

如果要在发送403后结束处理,则应提前退出该函数,不执行其他操作:

            if (!bearerHeader) {
                response.sendStatus(403);
                return;
            }

请编辑问题以显示完整的代码。我们看不到什么是
corsHandler
。我编辑了代码