text/htmltext/html은 웹 페이지의 근간인 HyperText Markup Language 문서의 미디어 타입입니다. 브라우저는 이 타입을 받으면 마크업을 파싱해 DOM을 구성하고, 연결된 CSS·JavaScript·이미지를 로드해 렌더링합니다.
charset 파라미터가 매우 중요합니다. `Content-Type: text/html; charset=utf-8`을 명시하지 않으면 브라우저가 인코딩을 추측하거나 문서 내 `<meta charset>`에 의존하는데, 이 과정에서 한글이 깨지거나(모지바케) 문자셋 스니핑을 악용한 XSS(UTF-7 인젝션 등)가 발생할 수 있습니다. HTTP 헤더의 charset은 문서 내 meta보다 우선하므로 헤더에 UTF-8을 명시하는 것이 가장 안전합니다.
브라우저는 text/html을 능동 콘텐츠로 취급해 스크립트를 실행합니다. 따라서 사용자가 업로드한 파일을 text/html로 재서빙하면 저장형 XSS가 됩니다. 방어를 위해 `X-Content-Type-Options: nosniff`로 스니핑을 막고, `Content-Security-Policy`로 스크립트 출처를 제한합니다.
e.g. Content-Type: text/html; charset=utf-8