gpt4 book ai didi

javascript - 从 header 获取 token 时,req.headers.split 不是函数

转载 作者:行者123 更新时间:2023-11-29 20:56:58 25 4
gpt4 key购买 nike

我正在尝试使用此处的代码示例 https://github.com/firebase/functions-samples/blob/master/authorized-https-endpoint/functions/index.js但是我的云功能一直崩溃说

req.headers.split is not a function
at cors (/user_code/index.js:25:37)
at cors (/user_code/node_modules/cors/lib/index.js:188:7)
at /user_code/node_modules/cors/lib/index.js:224:17
at originCallback (/user_code/node_modules/cors/lib/index.js:214:15)
at /user_code/node_modules/cors/lib/index.js:219:13
at optionsCallback (/user_code/node_modules/cors/lib/index.js:199:9)
at corsMiddleware (/user_code/node_modules/cors/lib/index.js:204:7)
at exports.savedProfiles.functions.https.onRequest (/user_code/index.js:14:5)
at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:26:41)
at /var/tmp/worker/worker.js:671:7

我不确定还有什么方法可以让它工作。这是我到目前为止使用的代码:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const cors = require('cors')({origin: true});

exports.savedProfiles = functions.https.onRequest((req, res) => {
cors(req, res, () => {
if ((!req.headers.authorization || !req.headers.authorization.includes('Bearer '))) {
console.log(req.headers);
console.error('No Firebase ID token was passed as a Bearer token in the Authorization header.');

res.status(403).send('Unauthorized');
return;
}

const tokenId = req.headers.split('Bearer ')[2];
res.status(200).send('Testing');
return;
});
});

我知道错误是由于 req.headers.split('Bearer ')[2]; 造成的,它只是从 header 中获取 token 。但我认为问题在于 req.headers 可以是 string 也可以是 string[]。我将如何着手让它发挥作用?谢谢。

最佳答案

req.headers 始终是一个由 header 名称索引的对象,而不是字符串。您提到的代码是这样做的:

req.headers.authorization.split('Bearer ')[1]

它正在访问“授权” header ,这是一个字符串,然后将其拆分。

关于javascript - 从 header 获取 token 时,req.headers.split 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48813683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com