2013-08-02 3 views
0

JSON 개체를 반환하는 API에 대해 각도로 POST 요청을하고 있습니다. Express.sessions를 믹스에 추가 할 때까지 모든 것이 완벽하게 작동했습니다. 이제 POST 요청은 200 상태를 제공하지만 2 분 동안 아무 것도 반환하지 않습니다 (시간이 초과 된 경우). API가 성공적으로 호출되고 백엔드의 동작은 모두 정상이지만 서버에서 응답을 검색 할 수 없습니다. 사실, .error() 함수조차 호출하지 않습니다. 아무 것도하지 않고 시간을 그냥 지냅니다.AnglesJS POST 요청이 세션 사용시 응답을 반환하지 않음

가장 이상한 부분 : 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: '[...]'})); 

당신이 somethi가 발생한 경우 알려 주시기 바랍니다 이전에 유사하거나 어떤 아이디어가 있습니다.

예제의 다른 POST 요청이 완벽하게 작동하기 때문에 Angular를 사용하는 데 문제가 될 것으로 의심됩니다. 그러나 나는 또한 Angular의 세션으로 작업해야하는 것과 관련이 있다고 의심합니다. app.js의 세션 행을 주석 처리하면 모든 것이 잘 작동하기 때문입니다.

감사합니다.

+0

그것이 처리되지 않는 오류이거나 다른 것이 있어야 할 때 오류 미들웨어가 200을 리턴하면 놀라움. 사용자 정의 오류 미들웨어가 있습니까? 또한 데이터없이 200을 반환합니까? Chrome 개발자 도구 또는 방화 광이 디버깅에 도움이 될 수 있습니다. – Pickels

+0

감사합니다 Pickels! 오류 미들웨어가 약간 있지만, 내가 주석을 달면 아무 것도 해결되지 않습니다. 200을 반환하지만 응답이 없습니다 (데이터). 그래, 이것을 디버그하는 데 도움이되는 Chrome dev 도구를 사용하고 있습니다. –

답변

0

알았어요. 매우 바보 같았습니다. 나는 내 res.json 및 res.send를 반환하지 않았다.

관련 문제