2022. 9. 15. 22:26ㆍ기초학문/HTTP
HTTP/1.1 200, 302, 400, 403, 404 상태 코드 의미 플라스크로 알아보기
코드를 작성하다가 정말 자주 보이는 200, 400, 404 등의 코드를 HTTP 상태 코드라 한다. 상태코드의 역할은 쉽게 말해 클라이언트가 서버에 요청을 보내면 서버가 응답에다가 이 상태코드를 살짝 끼워보내 그 요청이 잘된 건지 잘못된 건지 알려주는 것이라고 볼 수있다 .
HTTP 상태 코드는 크게 5가지 범위로 나뉘어 분류하며 각각 전달하고자 하는 의미가 다르다.
100-199 : 정보성 상태 코드
200-299: 성공 상태 코드
300-399: 리다이렉션 상태코드
400-499 : 클라이언트 에러 상태 코드
500-599 : 서버 에러 상태 코드
아래는 코드를 짜다가 자주 등장하는 상태 코드다. 이 것들의 의미는 꼭 알고 가자.
200 ( 성공 상태 코드 )
✔︎ 200 상태 코드의 의미 : 클라이언트가 서버에 보낸 요청에 문제가 없다는 뜻이다. 즉 요청이 정상(OK)이라는 의미.
☞ 예시 : "GET /products?product=1234567890 HTTP/1.1" 200 -
302 ( 리다이렉션 상태코드 )
🤔 리다이렉션 상태 코드란? : 클라이언트가 요청한 데이터가 다른 위치로 옮겨졌다는 의미의 상태코드이다. 클라이언트가 요청한 데이터가 다른 곳으로 옮겨졌을 때 클라이언트에게 데이터가 옮겨진 사실을 알려주고 선택적으로 옮겨진 위치도 제공한다. (Location 헤더로)
✔︎ 302 상태 코드의 의미 : 요청한 URL이 옮겨졌다는 의미라는 점에서 301 상태 코드와 비슷하지만 Location 헤더로 제공된 옮겨진 URL 정보는 임시적인 주소일 뿐이고 이후 요청에서는 원래 URL을 사용해야 한다는 말이다. 즉 뒤에 나오는 400번 대 에러 코드랑은 다르다.
아래 코드는 'HTTP/1.0 클라이언트가 POST 요청을 보내고 302 리다이렉트 상태코드가 담긴 응답을 받으면 클라이언트는 Location 헤더에 들어있는 리다이렉트 URL을 GET요청으로 따라감.' 에 대한 예시 코드이다.
☞ 예시 : "POST /comment_write HTTP/1.1" 302 -
@app.route("/comment_write", methods=["GET","POST"])
def comment_write():
if request.method == "POST":
........... 생략 ............
return redirect(url_for("view", product=product_id))
return ''
400( 클라이언트 에러 상태 코드 )
실행하면 Bad Request 라고 브라우저에 표시되며 이는 서버가 400 에러 코드를 보내 클라이언트가 잘못된 요청을 보냈다고 알려주는 것이다.
403( 클라이언트 에러 상태 코드)
Forbidden 즉 요청이 거부되었음을 알려주는 에러코드다. 서버는 대부분 요청 거부 이유를 숨기며 서버가 요청 거부 이유를 알려주고 싶은 경우엔 이유를 엔터티 본문에 포함시킨다.
404( 클라이언트 에러 상태 코드)
Not Found 즉 서버가 요청한 URL을 찾을 수 없음을 알려준다.
☞ 예시 : "GET /... HTTP/1.1" 404 -