我的后端位于
NodeJs
和 Express
。我的 90% 的端点都经过 validateToken
中间,而且效果很好,但我创建了一个 delete
端点,由于某种原因,即使我发送它,它也没有得到 Authorization
标头。
这是我的代码的一部分:
// CORS
app.use(cors({
origin: true,
methods: ['GET', 'POST', 'PUT', 'DELETE'],
allowedHeaders: ['Content-Type', 'Authorization'],
}));
// Routes
router.delete('/package/:id', validateToken, isAdmin, deletePackage);
exports.validateToken = async (req, res, next) => {
try {
if (!req.headers.authorization) {
return res.status(401).send({error: 'Remember to include the Authorization header'});
}
const token = req.headers.authorization.split(' ')[1];
const decodedToken = await admin.auth().verifyIdToken(token);
if (!decodedToken) {
return res.status(401).send({error: 'Invalid token'});
}
req.user = decodedToken.email;
next();
} catch (error) {
return res.status(400).send({error: error});
}
};
export const deletePackageApi = id =>
Request.delete(`/package/${id}`, {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + localStorage.getItem('user-token'),
});
这是我仅通过
delete
请求得到的回复:
{error: 'Remember to include the Authorization header'}
我将其登录到 tha 后端,并且只有删除端点才无法获取授权标头。
我建议两件事:
Request
是什么!确保 delete
的 Request
方法正确附加标题。