我正在向一个返回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中注释掉会话行时,一切都运行良好。
谢谢!
答案 0 :(得分:0)
得到它 - 它非常愚蠢。我没有返回我的res.json和res.send