AngularJS POST请求在使用会话时不返回响应

时间:2013-08-02 17:42:18

标签: node.js angularjs express

我正在向一个返回JSON对象的API发出POST请求。一切都很顺利,直到我添加了express.sessions。现在,POST请求仍然提供200状态,但在2分钟内(超时时)不返回任何内容。 API被成功调用,后端的行为都正常,但我无法从服务器检索响应。实际上,它甚至不调用.error()函数。它没有做任何事情就超时了。

最奇怪的部分:当我第二次点击发出POST请求的链接时(紧接在第一次之后),请求和响应完全按预期执行,没有任何错误。第一个请求总是超时。

当我删除express.sessions时,一切都按预期工作。

我在节点上使用Express,在前端使用AngularJS。

以下是POST请求的代码:

要求被提出。这是一个Angular控制器。 (行为:没有记录任何内容。它没有达到成功()或错误()但是在2分钟后超时:

  $http.post('/api/add_highlight', newHighlight).
    success(function(id){
      console.log('response from server: ' + id)
    }).
    error(function(id){
      console.log('server response failed')
    })

API(行为:成功保存数据库中的条目。控制台日志显示所有成功,后端的行为正常。):

exports.add_highlight = function(req, res) {
  console.log('API has received request to add highlight')
      var hl = new models.highlights ({
        start: req.body.start
        , end: req.body.end
        , contents: req.body.contents
      })
      console.log(hl._id)
      hl.save(function(err){
        if (!err) {
          console.log('successfully saved highlight to mongo.')
          res.json(hl._id)
        }
        res.send('failed')
      })
};

app.js(当第二行被注释掉时,一切都按预期运行):

  app.use(express.cookieParser());
  app.use(express.session({store: new RedisStore(), secret: '[...]'}));

如果您之前遇到类似事情或有任何想法,请告诉我。

我非常怀疑使用Angular是一个问题,因为来自一个示例的另一个POST请求完全正常。但是我怀疑它也与我应该如何处理Angular中的会话有关,因为当我在app.js中注释掉会话行时,一切都运行良好。

谢谢!

1 个答案:

答案 0 :(得分:0)

得到它 - 它非常愚蠢。我没有返回我的res.json和res.send