AcceptAccept는 클라이언트가 응답 본문으로 받고 싶은 미디어 타입(MIME 타입)을 서버에 알려, 콘텐츠 협상(content negotiation)을 시작하는 요청 헤더입니다. 서버는 이 선호도에 맞춰 가장 적절한 표현을 골라 응답합니다.
여러 타입을 쉼표로 나열하고, 각 타입에 `;q=` 품질 가중치(0.0~1.0)를 붙여 우선순위를 표현합니다. q를 생략하면 1.0으로 간주합니다. 예를 들어 `application/json;q=1.0, text/html;q=0.5`는 JSON을 더 선호한다는 뜻입니다. `*/*`는 무엇이든 받겠다는 의미이고, `application/*`처럼 서브타입만 와일드카드로 둘 수도 있습니다.
서버가 요청된 어떤 타입도 만들 수 없으면 406 Not Acceptable을 반환할 수 있지만, 실무에서는 엄격히 협상하기보다 기본 표현을 그냥 보내는 경우가 많습니다. 응답이 Accept에 따라 달라진다면 캐시가 표현을 혼동하지 않도록 `Vary: Accept`를 함께 보내야 합니다.
Accept는 미디어 타입 협상 전용이고, 인코딩·언어·문자셋은 각각 Accept-Encoding·Accept-Language(그리고 과거의 Accept-Charset)가 담당합니다.
Accept: <media-type>[;q=<weight>][, <media-type>[;q=<weight>]]*e.g. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
<media-type> | 선호하는 MIME 타입(예: application/json, text/html). `type/*` 또는 `*/*`로 와일드카드 지정 가능. |
q=<0.0~1.0> | 품질 가중치(quality value). 생략 시 1.0이며, 값이 클수록 선호도가 높음. |