2014-01-14 57 views
0

我正在使用express的節點上處理REST API。我使用以下方法來獲取賬戶列表(暫時讀取從文件中的響應)Node.js表示請求保持活動

app.get('/accounts/list', function(req, res){ 
    var filename = basepath 
    + 'accounts-list.xml'; 
    var cb = function(input){send_successful_response(res, input);}; 
    var cb_err = function(input){send_error_response(res, input);}; 
    response_for_file(filename, cb, cb_err); 
}); 

有了:

function response_for_file(filename, cb_success, cb_error){ 
    fs.readFile(filename, 'utf8', function(error, data){ 
    if (!error) return cb_success(data) 
    else return cb_error(error) 
    }); 
} 

和:

function send_successful_response(res, content){ 
    res.set('Content-Type', 'text/xml') 
    .status(200) 
    .send(content); 
} 

當我打電話在Chrome這條路線一切看起來不錯。但是,當我從REST控制檯調用它時,它似乎仍然活着。我想知道是否有任何要求顯示響應應該終止,或者如果這是預期的行爲。

回答

0

我終於意識到問題是節點集的訪問控制限制。加入以下解決問題:

app.all('*', function(req, res, next){ 
    if (!req.get('Origin')) return next(); 
    res.set('Access-Control-Allow-Origin', '*'); 
    res.set('Access-Control-Allow-Methods', 'GET, POST'); 
    res.set('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type'); 
    res.set('Access-Control-Allow-Max-Age', -1); 
    if ('OPTIONS' == req.method) return res.send(200); 
    next(); 
});