기어가더라도 제대로

HTTP Accept type header 와 Content-Type header 의 차이점 본문

기타

HTTP Accept type header 와 Content-Type header 의 차이점

Damagucci-juice 2022. 6. 16. 23:09

HTTP 메시지는 

요청 메시지와 응답 메시지로 나뉜다. 

메시지는 자기 자신의 데이터에 대한 정보를 Header(메시지 내부)에 담아서 보낸다. 

즉, Header 는 데이터에 대한 메타 데이터이다. (정보의 정보)

그래서 공부를 하다가, 

  • Response Headers
    • Content-Type
  • Request Headers
    • Accept

이렇게 있길래 지금 네트워크 프로그래밍에서 요청을 보낼 때 Accept Header 만 보냈는데, 도무지 응답이 오질 않는 것이였다. 

같이 페어하는 짝에게 물어보니 왜 인지 모르겠으나, Content-Type 도 담아주면 된다는 것이였다. 

나는 약간 상기되어서

다마고치: "Request 인데 왜 Content-Type을 담아요? 진짜 궁금해서 (씨익씨익)" 

페어: ... 잘모르겠어요 

그렇게 하니 응답이 왔다. 그러나 찝찝한 이 기분.. 

검색을 해보니까 Content-Type 은 Response 와  Request 모두에 담는 Header 였다. !!

  • Content-Type 헤더
    • HTTP 메시지(요청과 응답 모두)에 담겨 보내는 데이터의 형식을 알려주는 헤더
    • 대부분의 HTTP 표준 스펙을 따르는 브라우저와 웹서버는 이 헤더를 기준으로 HTTP 메시지에 담긴 데이터를 분석
    • 이 값을 비워두면 데이터가 text 형식이라고 웹서버는 판단해서 해석을 함. 
    • GET 방식에서는 굳이 달아주지 않아도 된다. 
      • 무조건 URL 끝에 쿼리스트링으로  key=value 형식으로 들어가기 때문
    • POST, PUT 에선 반드시 달아주어야 한다. 
      • 메시지 BODY 에 데이터를 싣어나르기 때문에 Body 의 형태가 application/json 이라는 것을 밝혀야함. 
      • 첨부파일일 땐 알아서 브라우저가 multipart/form-data 로 보냄
  • Accept 헤더
    • 클라이언트엣허 웹서버로 요청시 요청 메시지에 담기는 헤더
    • 자신에게 이러한 데이터 타입만 허용하겠다는 뜻
    • "웹서버야 나는 'application/json' 만 받고 싶어"
      • 이를 따를지는 웹서버 마음
  • 정리
    • 두 헤더 모두 데이터 타입을 다루는 헤더이지만
    •  Content-Type 헤더는 현재 전송하는 데이터가 어떤 타입인지에 대한 설명이고
    • Accept 헤더는 클라이언트가 서버에게 웬만하면 데이터 전송시에 이러한 타입으로 가공해서 보내라하는 것과 같음

'기타' 카테고리의 다른 글

20220703 TIL  (0) 2022.07.03
이모지를 xcode 에서 이름 알려주는 프로그램  (0) 2022.06.30
홈 커밍 데이  (0) 2022.06.05
220530 TIL  (0) 2022.05.30
Swift 220511.til  (0) 2022.05.11
Comments