Nodejs有两个请求一次被触发

时间:2015-08-29 16:00:28

标签: javascript node.js express

为什么我的NodeJS应用每次都会触发两个requests?我不确定为什么这个OPTIONS每次都被解雇,当我实际上只是调用HTTP方法=> [GET, POST, PUT, DELETE]

OPTIONS /api/v1/admin/user/55e1d606803478cc1edacfa0 200 0.149 ms - -
DELETE /api/v1/admin/user/55e1d606803478cc1edacfa0 200 7.598 ms - 58

以下是我调用OPTIONS的代码。

app.all('/*', function(req, res, next){
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE, OPTIONS");
    res.header("Access-Control-Allow-Headers", "Content-type,Accept,X-Access-Token,X-Key");

    if(req.method === 'OPTIONS'){
        res.status(200).end();
    } else {
        next();
    }

});

由于这两个users同时被删除。

1 个答案:

答案 0 :(得分:4)

  

为什么我的NodeJS应用每次都会发出两个请求?

它不是;浏览器是。

  

我不确定为什么这个OPTIONS每次都被解雇,当时我实际上只是在调用HTTP Methods => [GET, POST, PUT, DELETE]

最有可能的原因是您在网络浏览器中使用ajax进行跨域调用。 OPTIONS调用是浏览器在实际调用之前进行的预检调用,以确保目标服务器接受来自给定源的跨源调用,如果是,则查找是什么服务器从该来源接受的标题,方法,凭证等。

更多the specification

并非所有跨省调用都需要预检,但许多(可能是大多数)都需要预检。规则是here