개발도서 읽기/HTTP 완벽 가이드

[1. HTTP: 웹의 기초] 3장) HTTP 메시지

까연 2021. 4. 18. 15:16

메시지의 흐름

: HTTP메시지는 메시지의 내용과 의미를 설명하는 텍스트 메타 정보로 시작하고, 선택저으로 데이터가 올 수 있다.

 

  • 메시지의 방향 - 인바운드, 아웃바운드, 업스트림, 다운스트림

 

메시지의 각 부분

시작줄

  • 메서드

: 요청의 시작줄은 메서드로 시작하며, 서버에게 무엇을 해야 하는지 말해준다.

 

메시지 본문이 있는 것 - POST, PUT

메시지 본문이 없는 것 - GET, HEAD(서버에서 헤더만 가져오는 것), TRACE(과정 추적), OPTIONS(서버가 어떤 메서드를 수행할 수 있는지 확인), DELETE

 

  • 상태 코드

: 응답의 시작줄에 위치하며, 클라이언트에게 무엇이 일어났는지 말해주는 것

전체 범위 정의된 범위 분류
100-199 100-101 정보
200-299 200-206 성공
300-399 300-305 리다이렉션
400-499 4000-415 클라이언트 에러
500-599 500-505 서버 에러

developer.mozilla.org/ko/docs/Web/HTTP/Status

 

HTTP 상태 코드 - HTTP | MDN

HTTP 상태 코드BCD tables only load in the browser HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응

developer.mozilla.org

  • 사유 구절

: 응답 시작줄의 마지막 구성요소로 상태 코드에 대한 글로 된 설명 제공

 

  • 버전 번호

: 요청과 응답 메시지 양쪽 모두 기술, 자신이 따르는 프로토콜의 버전을 상대방에게 말해주기 위한 수단

형식 => HTTP/x.y

 

HTTP/2.22 > HTTP/2.3

 

헤더

: HTTP 헤더 필드는 요청과 응답 메시지에 추가 정보를 담는다. 이름/값 쌍의 목록으로 구성되어 있다.

 

헤더 분류

  • 일반 헤더 

: 클라이언트와 서버 양쪽 모두 사용하며, 다양한 목적으로 사용된다. 

ex) Date: Tue, 3 Oct 1974 02:15:00 GMT

 

일반 정보 헤더, 일반 캐시 해더가 있다.

 

  • 요청 헤더

: 요청에 대한 부가 정보 제공

ex) Accept: */* -> 서버에게 클라이언트가 자신의 요청에 대응하는 어떤 미디어 타입도 받아들일 것임을 의미

 

요청 정보 헤더, Accept 관련 헤더, 조건부 관련 헤더, 요청 보안 헤더(Authorization, Cookie, Cookie2...), 프락시 요청 헤더 등

 

  • 응답 헤더

: 응답에 대한 부가 정보 제공

ex) Server: Tiki-Hut/1.0 -> 클라이언트가 어떤 종류의 서버와 대화하고 있는가

 

응답 정보 헤더, 협상 헤더(Accept-Ranges, Vary), 응답 보안 헤더 등

 

  • Entity 헤더

: 본문 크기와 콘텐츠, 리소스 그 자체 서술

ex) Content-Type: text/html -> 데이터 타입이 무엇인지

 

엔터티 정보 헤더, 콘텐츠 헤더, 엔터티 캐싱 헤더 등

 

 

  • 확장 헤더

: 명세에 정의되지 않은 새로운 헤더

 

헤더 문법: 이름, 쉼표, 공백(없어도 됨), 필드 값, CRLF(줄바꿈 문자열) 의 순서

 

엔터티 본문

: HTTP 메시지의 화물. 이미지, 비디오, HTML문서, 애플리케이션 등 여러 종류의 디지털 데이터를 실어 나를 수 있다.

 

 

메서드

* 모든 서버가 모든 메서드를 구현하지는 않는다.

 

  • 안전한 메서드

: GET이나 HEAD 메서드를 사용하는 HTTP 요청의 결과로 서버에 어떤 작용도 없음을 의미한다.

  • GET

: 주로 서버에게 리소스를 달라고 요청하기 위해 사용

 

  • HEAD

: GET처럼 행동하지만, 서버는 헤더만을 돌려준다. 본문이 반환되지 않는다.

 

- 리소스를 가져오지 않고도 무엇인지 알아낼 수 있다,

- 응답의 상태코드를 통해 개체가 존재하는지 확인 할 수 있다.

- 헤더를 확인하여 리소스가 변경되었는지 검사할 수 있다.

 

  • PUT

: 서버가 요청의 본문을 가지고 새 문서를 만들거나, 교체하는 것

 

  • POST

: 서버에 입력 데이터를 전송하기 위해 설계

 

  • TRACE

: 클라이언트에게 자신의 요청이 서버에 도달했을 때 어떻게 보이게 되는지 알려준다. 주로 진단을 위해 사용되며, 어떠한 엔터티 본문도 보낼 수 없다.

 

  • OPTIONS

: 웹 서버에게 특정 리소스에 대해 어떤 메서드가 지원되는지 확인하는 용도

 

  • DELETE

: 서버에게 요청 URL로 지정한 리소스를 삭제하도록 요청. but, 삭제가 수행되는 것을 보장하지 X