Javascript Firebase函数无法在将标题发送到客户端后设置标题
当我试图从客户端调用firebase函数时,我创建了一个firebase函数。发送到客户端后无法设置标头。这是我在认证post请求后出现的后端错误。它看起来像是标题问题 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
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
。我编辑了代码