【问题标题】:Node.js express request staying aliveNode.js 快速请求保持活动状态
【发布时间】:2014-01-14 23:03:06
【问题描述】:

我正在使用 express 开发节点中的 REST API。我使用以下内容获取帐户列表(暂时从文件中读取响应)

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 控制台调用它时,它似乎还活着。我想知道是否需要显示响应应该终止,或者这是否是预期的行为。

【问题讨论】:

    标签: javascript node.js rest express


    【解决方案1】:

    您是否尝试在res 上致电end()

    另外,最好从文件中createReadStream()pipe() 它到res

    【讨论】:

      【解决方案2】:

      我最终意识到问题在于节点集的访问控制限制。添加以下内容解决了这个问题:

      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();
      });
      

      【讨论】:

        猜你喜欢
        • 2016-03-23
        • 2013-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 1970-01-01
        • 2012-03-09
        相关资源
        最近更新 更多