HTTP 완벽가이드 공부 내용 중 정리하고 싶은 내용 기록
HTTP Status Code
200 [OK]
- 요청은 정상이고 엔티티 본문은 요청된 리소스를 포함하고 있다
201 [Created]
301 [Moved Permanently]
- 요청 URL이 영구적으로 옮겨졌을 경우, Location 헤더에 현재 리소스 포함 ex. 도메인 변경
302 [Found]
- 요청 URL이 임시적으로 옮겨졌을 경우 ex. 상품의 일시품절
301과 302를 나눈 이유
SEO를 위해!
검색 엔진은 301 응답을 받으면 새로운 URL로 영구적으로 이동했다고 판단하여 과거 URL의 사이트 랭크와 평가 점수를 새로운 URL로 이동
반면에 302 응답을 받으면 사이트 랭크나 평가 점수를 새로운 URL로 이동시키지 않고 기존 URL에 유지
- 301 리다이렉트는 새로운 URL 혹은 사용하지 않는 페이지를 이동시키는데 적합
- 302 리다이렉트는 기존 URL에 컨텐츠 URL를 추가하려고 할 때 사용하면 유용
- 무의미하게 사용할 경우, 검색엔진이 302 리다이렉트를 악용하는 광고 컨텐츠들로 판단해 사이트랭크 점수에 패널티를 부여함
400 [Bad Request]
401 [Unauthorized]
- 리소스를 얻기 전에 클라이언트에게 스스로를 인증하라고 요구
403 [Forbidden]
- 요청이 서버에 의해 거부되었음
- 서버가 거절의 이유를 숨기고 싶을 때 보통 사용
404 [Not Found]
- 서버가 요청한 URL을 찾을 수 없음을 알려줌
500 [Internal Server Error]
- 서버가 요청을 처리할 수 없게 만드는 에러를 만났을 때
502 [Bad Gateway]
- 프락시나 게이트웨이처럼 행동하는 서버가 가짜 응답을 받았을 때(ex. 부모 게이트웨이 접속이 불가능할때)
503 [Service Unavailable]
- 현재는 서버가 요청을 처리해줄 수 없지만 나중에는 가능함
- Retry-After 헤더 사용 가능
504 [Gateway Timeout]
- 프락시나 게이트웨이에서 요청을 보내고 응답을 기다리다가 타임아웃 발생
Keep-Alive
✅ 하나의 TCP 커넥션을 통해 서버와 클라이언트가 지속적으로 통신할 수 있도록 해주는 header
site locality
- 서버에 연속적으로 동일한 클라이언트가 요청을 보낼 가능성이 높은 경우
클라이언트에서 Connection: Keep-Alive를 헤더에 담아 요청을 보냈을 때, 서버가 커넥션을 유지하고 싶다면 응답에 Connection: Keep-Alive 헤더를 담아서 보냄
만약 유지하지 못한다면 담아 보내지 않고, 응답 후 요청을 끊음
Keep-Alive의 문제점
- Keep-Alive 헤더를 지원하지 않는 프록시 서버를 사용할 경우 제대로 동작할 수 없음
HTTP1.1
- 이러한 문제들을 해결하기 위해 1.1 부터는 별도 설정이 있지 않으면 persistent connection을 맺음
- connection을 끊기 위해 명시적으로 Connection: close 헤더를 사용해야함