HTTP Status code는 무조건 잘 전달되어야 한다.

내가 참여한 유지보수 프로젝트 중에 이런 경우를 접해보고 고한다.

에러 페이지 주제에 HTTP 상태코드가 200인건 대체 누가 가르친 웹 어플리케이션 제작법이냐?

컨텐츠 공급자는 수급자에게 정확하게 웹 페이지 상태를 알려줄 의무가 있다.

페이지를 찾을 수 없으면 404 뿌려줘야 하고, 서버에 문제가 있으면 500 또는 기타 코드를 날려야 한다.

그리고 미인증 페이지에 대해서는 리디렉트를 한다면 상관없지만, 미인증 페이지를 표시할 때는 반드시 401 또는 403을 날려야 한다.

왜냐? 그건 HTTP 웹 서버를 구축할 때 기초적이고 기본적이며 필수적인 “약속” 이다.

HTTP 표준에 제정되어 있고 당연히 권장하고 있다 http://ko.wikipedia.org/wiki/HTTP

브라우저는 그런 헤더에 대한 대책을 마련하고 있고, 어자피 서버 오류나서 500인데도 사용자가 500 에러날때 표시한 페이지 뿌리고 싶으면 뿌릴 수 있다.

하지만 페이지가 오류가 났는데, 페이지를 찾을 수 없는데 응답 상태를 200으로 뿌리는 애들은 제정신인가?

그리고 이건 당신 웹 사이트를 마케팅하는 입장이라면 치명적일 수 있다. 웹 검색엔진은 수집할때 응답 코드를 상당히 중요시 여긴다.

만약 200 외에 400이나 500 응답 코드가 발생하면 그 페이지는 수집되지 않으며, 무시된다. 어자피 문제 있는데 검색 결과에 뿌릴 이유가 없다.

하지만 오류 페이지나 페이지 없다는 화면이 검색엔진에 수집되어서 당신 사이트 검색하는데 그 제목과 내용이 떡하니 검색된 결과를 본다고 생각해봐라.

컨텐츠 수급자는 당신 사이트를 이상하게 볼 것이다. 이게 정상적인 사이트인지 혼란스러워지고, 당신 사이트에 대한 신뢰도가 떨어진다.

Ajax를 사용한다면, 응답 코드는 프레임워크에게 큰 도움을 준다, 만약 응답 코드가 오류났거나 없는데도 항상 200 이면, Ajax 프레임워크들은 그걸 문제 없는줄 알고 가져올려고 시도할 것이고, 그것이 당신이 만든 프레임워크에 따라 화면에 표시되거나 처리된다.

문제 있는 데이터를 처리해서 렌더링한다는 것은, 당신이 공급하는 컨텐츠에게 치명적이 될 수 있다는 것이다.

만약 당신이 컨텐츠에 대한 신뢰도를 올리고, 더 많은 방문객수를 유치하고자 한다면, 먼저 응답 코드에 대해 명확해질 필요가 있다.

만약 모르는 사람을 위해서 많이 쓰는 응답 코드를 요약해 주겠다.

200 – 성공

301, 302 – 페이지 영구 이동 등으로 리디렉트에 쓰임

401 – 인증 안됨

403 – 접근할 수 없음

404 – 페이지 찾을 수 없음

406 – 잘못된 요청

500 – 서버 오류

503 – 게이트웨이 오류 (주로 WAS 서버나 프록시 타겟이 맛이 갔을 때)

그리고 각 서버 언어마다 위 응답 코드를 정의할 수 있으며 (301,302도 할 수 있으나 브라우저가 리디렉트에 대한 오해가 있으므로 쓰지 말것)

주요 서버단 언어별 404 헤더 뿌리기 예제

PHP : header(“HTTP/1.0 404 Not Found”);

JSP : response.setStatus(404);

ASP : Response.Status = “404 File Not Found”

ASP.NET (C#) : response.StatusCode = 404;

<

p>

웹 사이트 구축시 상당히 중요한 부분이니 반드시 숙지하여 좋은 웹사이트를 만들기 바란다. 이상.

composite / 2013년 6월 26일 / 미분류
태그:, , , , , , , ,

답글 남기기

Your email address will not be published / Required fields are marked *