일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- MySQL
- 외부키
- 참조키
- 2 > /dev/null
- EC2
- ㅔㄴ션
- ubuntu
- 예약
- 테스트메소드
- 서브쿼리
- appspec
- 커밋메세지수정
- foreignkey
- 메소드명
- docker명령어
- 포트
- WeNews
- 메세지수정
- 네이티브쿼리
- 컨테이너실행
- querydsl
- 추후정리
- 테스트
- Query
- appspec.yml
- 검색
- application.yml
- 적용우선순위
- AuthenticationEntryPoint
- subquery
- Today
- Total
제뉴어리의 모든것
[HTTP] HTTP 헤더 중 Content-Type 헤더와 Accept 헤더의 용도와 차이점 본문
Content-Type 헤더
Content-Type은 말그대로 HTTP 메시지(요청과 응답 모두)에 담겨 보내는 데이터의 형식을 알려주는 헤더입니다. 세상에 모든 브라우저와 모든 웹서버가 그렇다고는 말할 수 없겠지만 대부분의 HTTP 표준 스펙을 따르는 브라우저와 웹서버는 우선적으로 저 Content-Type 헤더를 기준으로 HTTP 메시지에 담긴 데이터를 분석하고 파싱할것입니다.
만약 Content-Type헤더가 없다면 데이터를 전송하는쪽(브라우저나 웹서버)에서는 특정한 형식의 데이터일지라도 받아들이는 쪽에서는 단순 텍스트 데이터라고밖에 생각할 수 없을것이며, 이를 분석하고 파싱하는 프로그램을 별도로 작성해주어야 겠지요.
그러나 여기서 알아야할 점은 HTTP 요청의 경우 GET방식인 경우에는 무조건 URL 끝에 쿼리스트링으로 key=value 형식으로 날아가기 때문에 굳이 Content-Type 헤더가 필요 없습니다. 웹서버 입장에서도 요청메시지의 METHOD가 GET이면 key=value 형식의 데이터라는것을 유추할 수 있기 때문입니다.
따라서 Content-Type은 POST나 PUT처럼 메시지 BODY에 데이터를 싣어 보낼때 중요합니다. 예를 들어 브라우저를 기준으로 설명하자면 AJAX를 통해 json 형식의 데이터를 전송하는 경우 Content-Type 값을 application/json 으로 지정하여 보낼 수 있고 <form>태그를 통해 첨부파일 등을 전송하는 경우라면 브라우저가 자동으로 Content-Type울 multipart/form-data로 설정하여 요청 메시지를 보낼것입니다.
Accept 헤더
Accept 헤더의 경우에는 브라우저(클라이언트) 에서 웹서버로 요청시 요청메시지에 담기는 헤더입니다. 이 Accept헤더는 자신에게 이러한 데이터 타입만 허용하겠다는 뜻입니다. 즉 브라우저가 요청 메시지의 Accept 헤더 값을 application/json이라고 설정했다면 웹서버에게 나는 json 데이터만 처리할 수 있으니 json 데이터 형식으로 응답을 돌려줘 라고 말하는것과 같습니다. 물론 그것을 지키든 지키지 않든 하는것을 웹서버 마음이겠지만요.
정리
Content-Type 헤더와 Accept 헤더 둘 다 데이터 타입(MIME)을 다루는 헤더이지만 Content-Type 헤더는 현재 전송하는 데이터가 어떤 타입인지에 대한 설명이고 Accept 헤더는 클라이언트가 서버에게 웬만하면 데이터 전송할때 이러이러한 타입으로 가공해서 보내라 라고 하는것과 같습니다.
출처: https://dololak.tistory.com/630 [코끼리를 냉장고에 넣는 방법]
'Network' 카테고리의 다른 글
HTTP 요청 메소드 정리 (0) | 2021.05.07 |
---|---|
options 메쏘드에 대해 (0) | 2021.05.07 |
다양한 서버인증 방법 (0) | 2021.03.28 |
쿠키(Cookie)와 세션(Session) & 로그인 동작 방법 (0) | 2021.02.24 |
HTTP, HTTPS, SSL의 간단 정의 (0) | 2021.01.30 |