预检请求陷入中间件

时间:2016-01-20 20:21:08

标签: javascript cors

如果我理解正确,预检请求不能包含自定义标题。

我有一些依赖自定义标题的中间件。

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方法没有自定义标头。

我的问题是多方面的:

  1. 预检请求是否通过所有中间件运行,直到达到终点?

  2. 这是一个好的解决方案吗?基本上我绕过了中间件中的CORS,当真正的请求进入时,让我自己通过并验证它。

  3. 如果不是#2,我该如何处理?

0 个答案:

没有答案