클라이언트가 보낸 요청의 처리 상태를 서버에서 결과로 알려주는 기능입니다.
100번대 : 요청이 수신되어 처리중임을 알려줍니다.
거의 사용하지 않는다고 합니다. MDN 문서 상으로는 정보 응답으로 정의되어 있습니다
200번대 : 요청이 정상 처리되었음을 알려줍니다
300번대 : 요청을 완료하려면 추가 행동이 필요하다는 것을 알려줍니다 (Redirection)
웹브라우저는 헤더에 Location 이 있으면 해당 위치로 자동으로 이동합니다.
만일 특정 리소스의 주소값이 변경되어 사용하지 않는 URI로 요청을 보낸다면 어떻게 될까요? 서버는 이에대한 처리를 할때 301 또는 308 번을 이용해 Header에 해당 리소스 Location을 담아 보냅니다.
301의 경우 Redirect 시 요청 메서드가 GET으로 변합니다.
308의 경우 Redirect 시 요청 메서드가 원본 요청을 유지합니다.
일시적인 Redirection
302 Found : Redirect 시 요청 메서드가 GET을 변하고 본문이 제거될 수 있습니다
307 Temporary Redirect : 302와 기능은 같으나 메서드 변경이 안됩니다
303 See Other
처음 302 스펙의 의도는 HTTP 메서드를 유지하는것이었으나, 대부분의 웹 브라우저들이 GET으로 바꾸어 버려 현재는 303과 307 / 301과 308 (tempo/perma) 이 나오게 되었습니다.
그러나 이미 많은 애플리케이션들이 모호한 302를 기본값으로 사용합니다.
304 Not Modified : 캐시를 목적으로 사용합니다.
클라이언트에게 리소스가 수정되지 않았음을 알려줍니다. 서버는 클라이언트가 어떻게 수정되지 않은 리소스를 클라이언트가 들고있는지 알 수 있을까요?
400번대 : 클라이언트 오류를 의미합니다.
500번대 : 서버 오류를 의미합니다.
RFC723X 으로 변화하면서 엔티티라는 표현대신 "표현" 으로 표현이 바뀌었다(?)
Content-Type : 표현 데이터 형식 / text.html; charset=utf-8
application/json
...
Content-Encoding : 표현 데이터의 압축 방식 gzip, deflate, identity(압축된게 없다)
단순 전송 Content-Length : 표현 데이터의 길이 ( 바이트 단위 입니다. )
분할 전송 : Transfer-Encoding : chuncked
범위 전송 : Content-Range : 1001~ 2300
Content-Language : 표현 데이터의 자연 언어
language의 점수는 1점부터 우선순위가 주어집니다.
Accept는 구체적인 데이터 포맷일수록 우선순위가 주어집니다.