如果我理解正确,预检请求不能包含自定义标题。
我有一些依赖自定义标题的中间件。
router.use(function(req, res, next){
var token = req.headers['x-access-token']
if (req.method == 'OPTIONS') {
next()
} else {
jwt.verify(token, 'secret', function(err, decoded) {
if (err) {
console.log('err', err)
next(err)
} else {
console.log('Decoded? ', decoded)
req.decoded = decoded;
next();
}
});
}
})
我觉得上面的代码是hacky,因为我匹配了请求方法的字符串,但OPTIONS卡在这里,因为令牌未定义,因为OPTIONS方法没有自定义标头。
我的问题是多方面的:
预检请求是否通过所有中间件运行,直到达到终点?
这是一个好的解决方案吗?基本上我绕过了中间件中的CORS,当真正的请求进入时,让我自己通过并验证它。
如果不是#2,我该如何处理?