Content-Type
요청·응답 Content

개요

Content-Type은 메시지 본문의 미디어 타입(MIME 타입)을 나타내는 헤더입니다. 요청에서는 보내는 본문의 형식을, 응답에서는 받는 본문의 형식을 알려, 상대가 데이터를 올바르게 해석하도록 합니다.

자세히

값은 `type/subtype` 형태이며(`application/json`, `text/html`, `image/png` 등), 세미콜론 뒤에 파라미터를 붙일 수 있습니다. 텍스트 타입에는 `charset=utf-8`로 문자 인코딩을 명시해 깨짐을 막고, `multipart/form-data`에는 `boundary=`로 파트 구분자를 지정합니다. 폼 전송에서는 `application/x-www-form-urlencoded`(단순 필드)와 `multipart/form-data`(파일 업로드)가 대표적입니다.

서버 API는 요청의 Content-Type을 보고 본문을 파싱합니다. 지원하지 않는 타입이면 415 Unsupported Media Type을 반환합니다. 응답에서 이 헤더가 부정확하면 브라우저가 콘텐츠를 잘못 처리합니다 — 예컨대 JSON을 `text/html`로 내려주면 렌더링·보안 문제가 생길 수 있습니다.

브라우저는 Content-Type이 없거나 모호할 때 본문을 들여다보고 타입을 추측하는 MIME 스니핑을 하는데, 이는 업로드된 파일이 스크립트로 해석되는 등 XSS 위험을 만듭니다. `X-Content-Type-Options: nosniff` 응답 헤더로 스니핑을 금지시켜 이를 방지합니다.

문법

Content-Type: <media-type>[; charset=<charset>][; boundary=<boundary>]

e.g. Content-Type: application/json; charset=utf-8

지시어 / 값

charset=<charset>텍스트 본문의 문자 인코딩(예: utf-8). 텍스트 타입에서 중요.
boundary=<token>multipart 본문에서 각 파트를 구분하는 경계 문자열.

실무 참고

관련 헤더

관련 상태코드

스펙 근거