JQUERY

게시글 '서버의 상태 코드'에 대한 정보
서버의 상태 코드
등록일 2009-11-10 조회 2,368

서버의 응답과 함께 전송되는 헤더 정보 중 가장 중요한 정보는 상태 코드입니다. 서버가 모든 요청에 대해 응답할 때 같이 보내는 상태 코드는 3자리의 숫자로 이뤄져 있으며, 웹의 통신 프로토콜 HyperText Transfer Protocol(HTTP)에 규정되어 있습니다. 예를 들어 404의 경우 "Not Found"(문서를 찾을 수 없음), 403은 "Forbidden"(접근이 거부된 문서를 요청함), 500은 "Internal Server Error"(내부 서버 오류)를 의미합니다.

 

가장 흔히 볼 수 있는 코드는 200입니다. 200은 "OK"(에러없이 전송 성공)을 의미합니다. 이 코드는 서버가 전송 요청을 받은 자원을 성공적으로 전달했다는 것을 의미합니다.

 

XMLHttpRequest 객체에서 서버가 보내는 상태 코드는 status라는 프로퍼티 값에 저장됩니다. 프로퍼티 값을 200과 비교하여 서버가 성공적으로 응답을 보냈는지 확인할 수 있습니다.

 

  function doSomething() {

    if(request.readyState == 4){  // request 는 XMLHttpRequest객체

      if(request.status == 200){

        // 서버가 응답을 정상적으로 보냈습니다.

      }

    }

  }

 

doSomething 함수 내의 첫 번째 if 구문은 readyState의 값이 4인지를 비교합니다. 서버로부터 응답을 받앗다는 의미로서 비교의 결과가 참이 되면, 두 번째 if구문이 실행됩니다. 이번에는 status 프로퍼티 값이 200인지를 확인합니다. 결과가 참이 되면 서버가 응답을 정상적으로 보낸 것입니다.

 

서버로부터 정상적인 응답을 받지 못했을 경우에 else 절을 추가하여 처리하는 것도 가능합니다.

  function doSomething() {

    if(request.readyState == 4) {  // request 는 XMLHttpRequest객체

      if(request.status == 200) {

        // 서버가 응답을 정상적으로 보냈습니다.

       } else {

        // 무엇인가 잘못되었습니다.

       }

    }

  }

 

성공적인 응답을 뜻하는 코드는 200 외에도 "Not Modified"(수정되지 않았음)을 뜻하는 304가 있습니다. 브라우저가 조건적인 GET 요청으로 알려져 있는 동작을 하는 경우, 서버는 때때로 304 코드로 응답합니다. 오페라 브라우저는 조건적인 GET 요청을 사용하는데, 이 경우 서버는 브라우저가 마지막으로 문서를 요청한 이후 변경 사항이 없다는 의미의 304 응답을 하기도 합니다. 그러면 브라우저는 캐시된 파일을 안전하게 사용할 수 있습니다.

 

이러한 경우를 처리하기 위해 status 의  값이 200인지 304인지 확인해야 합니다.

 

  function doSomething() {

    if(request.readyState == 4) {  // request 는 XMLHttpRequest객체

      if(request.status == 200 || request.status == 304) {

        // 서버가 응답을 정상적으로 보냈습니다.

      } else {

        // 무엇인가 잘못되었습니다.

      }

    }

  }