2015-08-29 24 views
0

爲什麼我的應用程序的NodeJS發射了兩枚requests每次被炒魷魚嗎?我不知道爲什麼這個選項之一是每一次都被解僱了,當我實際上只調用HTTP方法=>[GET, POST, PUT, DELETE]兩個的NodeJS請求,同時

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

下面是我的代碼,我在哪裏呼叫選項。

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的越來越在同一時間刪除。

+0

你檢查,如果瀏覽器所請求的favicon.ico? – Neil

回答

4

爲什麼我的應用程序的NodeJS射擊每次兩個請求?

它不是;瀏覽器是。

我不知道爲什麼這個選項之一是每一次都被解僱了,當我實際上只調用HTTP方法=>[GET, POST, PUT, DELETE]

很有可能是因爲你正在做跨域調用,在web瀏覽器中使用ajax。 OPTIONS調用預檢調用瀏覽器在真正調用之前調用以確保目標服務器接受來自給定源的跨源調用,並且如果是,則找出哪些標頭,方法,證書等等服務器從該來源接受。

the specification

並非所有的跨域調用需要預檢,但很多(可能是大部分)做到;規則是here