오늘 포스팅에서는 상태 코드가 무엇인지 그 개념과, 종류에 대해 공부하려고 한다.
상태 코드가 왜 필요할까?
사례를 통해서 필요성에 대해 이해해 보자.
💋 브라우저는 요청에 대한 결과를 알려주지 않으면 알지 못한다
우리가 로그인할 때를 생각해 보자!
위 사진에서 어떤 일이 일어난 걸까?
1. 내가 보낸 아이디, 패스워드는 POST 요청을 통해 서버로 전달되었다.
2. 서버는 데이터베이스에서 내 아이디에 해당하는 패스워드를 (암호화된 형태로 비교해) 확인했지만 잘못된 패스워드였다. 혹은, 아이디 자체도 존재하지 않았다.
3. 서버는 방금 나의 요청에 대해 인증에 실패해서 '아이디 또는 패스워드가 잘못 입력되었습니다.'라는 문구를 내가 보고 있는 페이지로 보냈다.
사용자는 '아이디 또는 패스워드가 잘못 입력되었습니다.'를 보고 인증에 실패했음을 알 수 있다.
하지만, 로그인에 실패했는데도 브라우저는 내가 실패했음을 모르고, '비밀번호를 업데이트하시겠습니까?'를 띄우고 있다.
왜 몰랐을까...? 어떻게 하면 알 수 있을까?
💋 상태 코드(Status Code)를 통해서 요청이 실패했음을 알려줄 수 있다
브라우저는 상태 코드(Status Code)를 통해서 방금 보낸 요청이 서버에서 어떻게 처리되었는지 확인한다.
방금 보냈던 로그인을 위한 POST 요청이 어떻게 처리되었는지 F12를 누르고 Network에 들어가서 확인해 보았다.
Status Code 204...!
204 No Content 상태 코드는 서버가 요청을 성공적으로 처리했지만, 응답으로 반환할 데이터가 없음을 나타내는 코드이다.
브라우저는 지금 내가 로그인에 실패했다는 사실을 모르고 눈치 없이 비번을 저장하겠냐고 물어본 것이었다...!
브라우저에게 지금 로그인에 실패했다는 것을 알리기 위해서는 서버에서 응답할 때, 현재 상황에 맞는 상태 코드를 보내는 것이 좋다.
401 Unauthorized 상태 코드를 보내는 것이 좋다. 이 상태 코드는 클라이언트가 인증되지 않았음을 나타내며, 클라이언트가 인증 정보를 제공하지 않았거나, 제공한 인증 정보가 유효하지 않은 경우에 사용된다.
그러면 브라우저는 비번을 저장하겠냐는 물음을 하지 않고, 적절한 행동을 취하게 될 것이다.
💋 상태 코드(Status Code)의 종류
상태 코드의 종류는 꽤 많다.
자주 사용되는 것부터 소개하겠음!
200 OK: 요청이 성공적으로 처리되었음을 나타냅니다.
301 Moved Permanently: 요청한 리소스가 다른 URL로 옮겨졌음을 나타냅니다.
302 Found: 요청한 리소스가 다른 URL에 일시적으로 옮겨졌음을 나타냅니다.
400 Bad Request: 요청이 부적절하거나 잘못되었음을 나타냅니다.
401 Unauthorized: 요청에 대한 권한이 없음을 나타냅니다.
403 Forbidden: 요청이 서버에서 거부되었음을 나타냅니다.
404 Not Found: 요청한 리소스가 서버에서 찾을 수 없음을 나타냅니다.
500 Internal Server Error: 서버 내부 오류로 요청을 처리할 수 없음을 나타냅니다.
위키피디아에 보면 많은 상태 코드가 모두 나와 있다. 나는 캡쳐본을 가져왔음
밑에 있는 것 말고도 진짜 다양하고 많은데, 모든 것을 알 필요는 없다.
다만 상태 코드의 종류가 많은 만큼 어떤 상황에서 어떤 상태 코드를 사용해야 하는지에 대한 이해가 필요하다.
상태 코드를 올바르게 사용하는 것이 중요하며, 이를 통해 클라이언트와 서버 간의 통신이 원활하게 이루어질 수 있다.
끗
'WEB > HTTP' 카테고리의 다른 글
[HTTP] Cache-Control: 웹 서비스 캐시(Cache) 다루기 (2) | 2023.09.05 |
---|---|
[HTTP] 쿠키(Cookie): 쿠키가 필요한 이유, 쿠키의 구조, 사용 방법과 주의사항 (1) | 2023.05.04 |
[HTTP] HTTP 기본 인증 (Basic Authentication): 개념과 사용 방법 (1) | 2023.05.02 |
[HTTP] 요청(Request)과 응답(Response): Header와 Body에는 어떤 내용이 들어있을까? (0) | 2023.04.17 |