text/plain vs text/html — 使い分けガイド
text/plainとtext/htmlの違い、ブラウザがHTMLをレンダリングするタイミング、生テキストを表示するタイミングを理解します。
Common Types
詳細な説明
text/plain vs text/html
この2つのテキストMIMEタイプは、どちらも人間が読めるコンテンツを運ぶにもかかわらず、根本的に異なる目的を持っています。
text/plain
text/plainは、ブラウザにコンテンツをそのまま表示するよう指示し、HTMLタグの解釈は行いません。改行と空白は保持され、マークアップとしてレンダリングされるものはありません。
使用例:
- ログファイルのダウンロード
- マークアップなしのREADMEファイル
- プレーンテキストのAPIエラーメッセージ
- 生のコードスニペット
text/html
text/htmlはブラウザにコンテンツをHTMLドキュメントとして解析・レンダリングするよう指示します。
セキュリティの影響
ユーザー提供コンテンツをtext/htmlで配信するのは危険で、**クロスサイトスクリプティング(XSS)**が可能になります。X-Content-Type-Options: nosniffヘッダーは、ブラウザがMIMEスニッフィングでtext/plainをHTMLとして扱うのを防ぎます。
比較
| 特徴 | text/plain | text/html |
|---|---|---|
| HTMLタグのレンダリング | なし | あり |
| 空白の保持 | あり | 縮小(<pre>以外) |
| XSSリスク | 低 | 高 |
| 典型的な用途 | ログ、生テキスト | Webページ、メール |
ユースケース
ログファイル、生の設定出力、HTMLレンダリングが不要なコンテンツを配信する場合はtext/plainを選択します。Webページ、HTMLメール、ブラウザで視覚的にスタイリングされるべきコンテンツにはtext/htmlを使用します。