text/plaintext/plain은 어떤 구조나 서식도 없는 순수 텍스트의 미디어 타입입니다. 로그, README, 간단한 API 응답, 디버그 출력 등 사람이 그대로 읽는 평문에 사용하며 브라우저는 이스케이프 없이 있는 그대로 표시합니다.
브라우저는 text/plain을 마크업으로 해석하지 않으므로 `<b>`나 `<script>`가 있어도 태그 문자 그대로 화면에 보입니다. 이 성질 때문에 사용자 입력을 안전하게 되돌려 보여주는 데 유용하지만, 함정이 하나 있습니다: 일부 브라우저는 `Content-Type`을 무시하고 내용을 스니핑해 HTML로 렌더링할 수 있습니다. 실제로 첫 바이트에 `<html>` 같은 패턴이 있으면 text/plain으로 보냈어도 HTML로 실행돼 XSS가 될 수 있으므로 `X-Content-Type-Options: nosniff`를 함께 보내야 합니다.
charset 파라미터가 중요합니다. 과거 text/* 타입은 charset 미지정 시 US-ASCII가 기본이었으나(RFC 2046), 현대 HTML 표준과 브라우저는 UTF-8을 가정하는 방향으로 정리되었습니다. 한글·이모지가 든 평문은 반드시 `charset=utf-8`을 명시해야 안전합니다.
e.g. Content-Type: text/plain; charset=utf-8