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を使用します。

試してみる — MIME Type Reference

フルツールを開く