Skip to main content

Command Palette

Search for a command to run...

[네트워크] HTTP Header & HTTP Body 그리고 HTTP 메소드

CS스터디를 진행 중에 있으며, 네트워크 파트를 공부하던 중 HTTP 메소드에 대해서 학습하고 정리했습니다.

Published
•3 min read•View as Markdown
[네트워크] HTTP Header & HTTP Body 그리고 HTTP 메소드


어제보다 더 나은 서비스를 만들어내는 사람이 되고자 노력하며, 내일의 나를 위해 기록합니다.

본 포스팅은 현재 진행 중인 CS스터디를 위해 정리한 자료를 포스팅한 것입니다.

들어가며...

공부하고 작업하면서 HTTP header와 body에 내용을 담아 보내는 일을 제대로 경험해보지 못했었다. 취준생 신분인 지금 서버 구성을 백엔드와의 협업이 아닌 firebase와 같은 서버리스 프로덕트들을 활용하다보니 HTTP 메소드도 다른 서비스에서 데이터를 불러올 때 GET메소드를 사용하는 것 제외하곤 사용할 일이 거의 없었다. 그렇기 때문에 당장 디테일한 지식을 습득하는 것보다는 개념적으로 이해할 수 있도록 접근하는데에 집중했다.

HTTP Header & HTTP Body

HTTP Header

클라이언트와 서버가 요청 또는 응답으로 부가적인 정보를 전송하기 위해 작성하는 내용으로 General headers, Request headers, Response headers, Entity Headers 4가지로 나뉜다.

HTTP 구조

General Header (공통 헤더)

요청과 응답 모두에 적용되지만 바디에서 최종적으로 전송되는 데이터와는 관련이 없는 헤더

  • Date : 현재시간

  • Cache-Control : 캐시를 제어할 때 사용

  • Via : 프록시 서버의 이름, 버전, 호스트명

  • Connection : 네트워크 접속을 유지할 지 말 지 제어

  • Transfer-Encoding : 사용자에게 entity를 안전하게 전송하기 위해 사용하는 인코딩 형식을 지정

Request Header (요청 헤더)

HTTP 요청에서 사용되지만 메시지의 컨텐츠와 관련이 없는 패치될 리소스나 클라이언트 자체에 대한 자세한 정보를 포함하는 헤더

  • Host : 요청하려는 서버 호스트 이름과 포트번호

  • User-agent : 클라이언트 프로그램 정보

  • Authorization : 인증 토큰을 서버로 보낼 때 사용

  • Cookie : Set-Cookie 헤더와 함께 서버에 의해 이전에 전송되어 저장된 HTTP 쿠키를 포함해 저 장

  • Origin : 서버로 Post 요청을 보낼 때 요청이 어느 주소에서 시작되었는 지 나타냄. 경로 정보는 포 함하지 않고 서버이름만 포함 - 이 값으로 요청을 보낸 주소와 받은 주소가 다르면 CORS 에러가 난다.

Response Header (응답 헤더)

위치 또는 서버 자체에 대한 정보와 같이 응답에 대한 부가적인 정보를 갖는 헤더

  • Server : 웹 서버의 종류

  • Age : max-age 시간 내에서 얼마나 흘렀는 지 알려주는 초 단위의 값

  • Referrer-policy : 서버 referrer 정책을 알려주는 값

  • WWW-Authenticate : 사용자 인증이 필요한 자원을 요구할 시, 서버가 제공하는 인증 방식

  • Proxy-Authenticate : 요청한 서버가 프록시 서버인 경우 유저 인증을 위한 값

  • Set-Cookie : 서버 측에서 클라이언트에게 세션 쿠키 정보를 설정

Entity Header (엔티티 헤더)

컨텐츠 길이나 MIME타입과 같이 엔티티 바디에 대한 자세한 정보를 포함하는 헤더

  • Content-type : 리소스의 미디어 타입을 명시. Ex) application/json, text/html

  • Content-Length : 바이트 단위를 가지는 개체 본문의 크기

  • Content-language : 본문을 이해하는데 가장 적절한 언어

  • Content-Security-Policy : 다른 외부 파일을 불러오는 경우 차단할 리소스와 불러올 리소스 명시

  • Location : 301,302 상태코드일 때만 볼 수 있는 헤더로 서버의 응답이 다른 곳에 있다 고 알려주며 해당 위치를 지정

HTTP Body

클라이언트에서 서버에 데이터를 전달하고 싶을 때 Body에 데이터를 담아 보냄

대표적인 5가지 HTTP 메소드

  • GET : 서버에서 URI 기반으로 데이터를 받아옴. URI 의 끝임을 “?”기호를 통해 표현하고 뒤로는 쿼리값을 작성한다.
    www.google.com/?date=blabla&name=blabla&key=123456789
  • POST : 서버에 데이터를 보내 저장하며 URL이 아닌 HTTP Message Body를 통해 전달

  • PUT : 데이터 전체를 수정함

    • {“a”:1, “b”:3} 이라는 데이터를 {“a”:1, “b”:5}로 수정한다면, 부분 데이터를 수정하지 않고 {“a”:1, “b”:5} 라는 데이터 전체로 교체해야한다.
  • PATCH : 데이터 일부를 수정함

    • {“a”:1, “b”:3} 을 {“a”:1, “b”:5}로 수정할 때, {“b”:5} 만 body에 실어보내 수정가능하다.
  • DELETE : 데이터를 삭제함

마무리하며...

원래 상태코드도 같이 포스팅할까 했는데, 너무 다양하고 개념적 이해가 아니라 그냥 인터넷 검색하고 그때 그때 파악하면 되니 포스팅 하지 않았다. 아무튼 HTTP Header와 Body에 대해서는 막연히 알고 있었는데 Header에 담기는 정보가 생각보다 다양하고 이를 통해서 에러핸들링은 물론 데이터를 활용한 다양한 기능 구현에 필수적인 지식이구나 싶다. 앞으로 CS지식 더 열심히 넣어야지!