🌐 레슨
상태코드 — 200·404·500, 서버의 표정
404가 무슨 뜻인지 알면 에러가 안 무서워요. 숫자 세 자리로 서버의 기분을 읽어요.
① 오늘의 미션
서버에게도 표정이 있다
지난 레슨에서 JSON으로 데이터를 주고받는 공용어를 배웠어요. 그런데 손님이 우리 반찬가게 사이트에 무언가를 요청하면,
서버는 데이터를 주기 전에 항상 세 자리 숫자 하나를 먼저 건넵니다. 이게 상태코드(status code)예요.200이면 "여기 있습니다", 404면 "그런 메뉴 없는데요", 500이면 "주방에 불났어요" — 숫자만 보면 가게가 지금 어떤 기분인지, 그리고 누구 잘못인지까지 알 수 있어요. 오늘은 이 표정을 직접 읽어봅니다.
설명을 따라 진행하면, 여기서 직접 쳐보게 돼요 👇
$ _
📚 「상태코드 — 200·404·500, 서버의 표정」 레슨 내용 전체 텍스트로 훑어보기
서버에게도 표정이 있다
지난 레슨에서 JSON으로 데이터를 주고받는 공용어를 배웠어요. 그런데 손님이 우리 반찬가게 사이트에 무언가를 요청하면,
서버는 데이터를 주기 전에 항상 세 자리 숫자 하나를 먼저 건넵니다. 이게 상태코드(status code)예요.200이면 "여기 있습니다", 404면 "그런 메뉴 없는데요", 500이면 "주방에 불났어요" — 숫자만 보면 가게가 지금 어떤 기분인지, 그리고 누구 잘못인지까지 알 수 있어요. 오늘은 이 표정을 직접 읽어봅니다.
손님이 반찬가게 메뉴 페이지를 열었더니 서버가 200을 돌려줬어요. 무슨 뜻일까요?
맞아요. 200 = OK. 가장 자주 보는 표정이자, 모든 게 정상이라는 뜻이에요. 상태코드는 맨 앞자리 숫자로 큰 분류를 합니다 — 2로 시작하면 성공(2xx)이에요.
페이지 내용은 빼고 상태코드만 보려면 curl -I를 써요. -I는 머리(헤더)만 달라는 옵션이에요.
잘 살아있는 사이트에 한번 던져볼게요.
curl -I https://example.com — 헤더만 요청해요 (-I 대문자 아이)첫 줄에 200이 보이죠? 이게 서버의 표정이에요. 내용은 안 받고 안부만 물은 셈이에요. 디버깅할 때 가장 먼저 던지는 한 줄입니다.
에러 코드는 크게 둘로 갈려요. 첫 자리가 4냐 5냐로 누구 잘못인지가 갈립니다.
4xx — 손님(요청)의 실수: 네가 잘못 보냈다.
없는 메뉴를 찾았거나(404), 출입금지 구역에 들어왔거나(403).
요청을 고치면 해결돼요.
없는 메뉴를 찾았거나(404), 출입금지 구역에 들어왔거나(403).
요청을 고치면 해결돼요.
5xx — 가게(서버)의 사고: 가게 안에서 사고가 났다.
주방에 불이 났거나(500) 서버가 뻗었어요.
손님이 할 수 있는 건 없고, 가게가 고쳐야 해요.
주방에 불이 났거나(500) 서버가 뻗었어요.
손님이 할 수 있는 건 없고, 가게가 고쳐야 해요.
반찬가게 사이트에 있지도 않은 주소를 손님이 입력했어요 — 예를 들어 /없는메뉴.
서버는 어떤 숫자로 답할까요?
맞아요. 404 Not Found — 그 주소엔 아무것도 없다는 뜻이에요. 가장 유명한 에러죠. 첫 자리가 4니까 요청한 쪽의 문제 — 주소 오타를 의심하면 돼요.
이번엔 일부러 없는 주소를 쳐서 404를 직접 만나봐요. 에러는 피하는 게 아니라 읽는 거예요.
curl -I https://example.com/banchan-not-here — 존재하지 않는 경로에 안부를 물어요404가 떴어요. 무섭지 않죠? 서버가 정상적으로 살아서 "그건 없어요"라고 또박또박 답한 거예요. 4로 시작하니 내 주소를 다시 보면 됩니다.
반찬가게 사이트의 사장님 전용 관리자 페이지에 손님이 들어가려 하면, 서버가 403을 줘요. 무슨 뜻일까요?
맞아요. 403 Forbidden — 페이지는 있지만 출입금지예요. 404(아예 없음)와 헷갈리기 쉬운데, 403은 있는데 너는 안 돼예요. 둘 다 4xx라 요청·권한 쪽 문제죠.
페이지 내용 전부 말고 상태코드(헤더)만 보고 싶을 때 curl에 붙이는 옵션, 기억나나요? 빈칸을 채워보세요.
정답!
-I(대문자 아이)는 헤더만 받아오는 옵션이에요. 본문은 버리고 표정만 빠르게 확인할 때 써요. 디버깅의 첫 한 줄입니다.손님이 멀쩡한 주소로 들어왔는데 서버가 500을 줬어요. 누구 잘못이고, 손님은 뭘 해야 할까요?
맞아요. 500 Internal Server Error는 가게(서버) 안에서 난 사고예요. 첫 자리가 5니까 손님 잘못이 아니에요. 우리 사이트라면 우리가 코드를 고쳐야 하고, 남의 서비스라면 잠시 기다렸다 다시 시도하면 됩니다.
숫자 하나로 책임이 갈린다
에러를 만났을 때 가장 먼저 볼 건 첫 자리 숫자예요.• 2xx 성공 — 잘 됐다 (200 OK)
• 3xx 이사 감 — 주소가 다른 곳으로 옮겨졌다
• 4xx 너의 실수 — 요청·권한 문제 (404 없음 · 403 출입금지)
• 5xx 서버의 사고 — 가게가 고쳐야 한다 (500 내부 오류)
기억할 한 문장
4로 시작하면 내 문제, 5로 시작하면 서버 문제. 이 한 줄만 알아도, 에러 앞에서 당황하지 않고 누구를 봐야 할지 압니다.반찬가게 사이트가 이상해요. 어떤 순서로 진단하면 좋을까요? (↑↓로 정렬)
완벽해요! 표정 확인 → 책임 가르기 → 맞는 곳 의심 → 다시 확인. 에러 메시지에 휘둘리지 않고 숫자로 차분히 좁혀가는 게 핵심이에요.
한 줄로
이제 서버의 표정을 읽을 수 있어요. curl -I 한 줄이면 200·404·500을 직접 확인하고,
4면 내 탓 5면 서버 탓으로 누구 책임인지 바로 갈라낼 수 있죠. 에러는 더 이상 벽이 아니라 표지판이에요.다음 레슨에서
지금까진 example.com 같은 남의 서버에 안부를 물었어요. 다음엔 드디어 내 PC를 직접 서버로 띄워서,
localhost에 우리 반찬가게를 올려봅니다. 🏠