차이

2016-07-05 1 views
0

설정 : - 문제차이

Node/Express/Angular 1.x - 아약스 호출을 통해 클라이언트에서받은 응답 코드는 항상 200 (성공할 제공)에 관계없이 어디 응답 서버 응답의 헤더는 304 또는 200 (서버 콘솔, 브라우저 네트워크 응답 헤더에서 선택)을 제공합니다. 왜 우리는이 차이가 있습니까? 호출 다음 내 응용 프로그램의 부하에

getTeamInfo() { 
     return this.$http 
      .get(`${this.ApiUrl}`) 
      .then((response) => { 
       if (!response.data) { 
        console.log('could not obtain team information'); 
       } else { 
        //Always **200** for every successful response 
        console.log('TeamInfo Call status .. ', response.status); 
        return response.data; 
       } 
      }); 
    } 

서버 teams = new TeamController();

function TeamController(){ 
     this.teamInfo= function(req, res){ 
      var teamsInfo = {}; 
      if(req.session && req.session.teams){ 
       teams = req.session.teams; 
       teamsInfo = { 
        name: teams.attributes.name + ' - ' + teams.attributes.slogan 
       }; 
      } 
      //Express console gives GET /teams 304 or 200 
      res.send(teamsInfo); 
     }; 
    } 

답변

1

HTTP 304 Not Modified 코드입니다 app.use('/teams', teams.teamInfo); 같은 경로 설정을 가지고 클라이언트 코드에서 이루어집니다. Node.js는 동일한 자원이 다시 요청되고 응답이 변경되지 않은 경우 자동으로 304를 제공합니다. 이렇게하면 동일한 데이터를 두 번 보내지 않아도됩니다.

ETA 내 댓글의 내용 :

는 각 문서를 읽고, 나는 각 파싱이 200 모든 성공적인 요청 (자동 (304 개) 상태를 처리 할 수 ​​있도록 그들이 일을 업데이트 한 사실이 추가주는 생각 지난 번과 같은 내용, 아마도 상태에 이르기까지) 그리고 Angular는 304 상태를 모두 200으로 바꿉니다. 자세한 내용은 here을 참조하십시오.

+0

수정. 그러나 NodeJS가 304를 제공하면 클라이언트는 여전히 response.status = 200을 얻는다는 것을 어떻게 설명합니까? – Divs

+0

각도 문서를 읽는다면 angle은 성공한 모든 요청을 200으로 분석한다고 생각합니다. 304 상태를 자동으로 처리 할 수 ​​있도록 항목을 업데이트 했으므로 추가하면 304에 대해 200을 반환합니다. 자세한 내용은 여기를 참조하십시오. http://stackoverflow.com/questions/31598601/angularjs-http-304-error-modify-data-property –