Web・インターネットの用語一覧へ
このページの目次
Web・インターネット中級図解あり

Content-Typeとは?

読み方:content-type

最終更新:2026/08/18

3秒でわかる

HTTP のボディが何の形式なのかを受け手に伝えるヘッダ。これが違うと JSON が文字列扱いされたり日本語が化けたりします。

30秒図解

Content-Typeは本文の形式を伝え、text/html、application/json、image/pngなどで受け手の解釈を決める
Content-Typeは、バイト列を何として解釈するかの手がかりです。

もう少し詳しく

どういうものか

HTTP のリクエストやレスポンスに付くヘッダのひとつで、ボディに入っているデータが何の形式なのかを相手に伝えます。値は MIME タイプと呼ばれる形式名で、HTML なら text/html、API の JSON なら application/json、画像なら image/png といった具合です。後ろに charset=UTF-8 のように文字コードを添えることもできます。

なぜ必要か

ネットワークを流れてくるのは、ただのバイト列です。受け取った側はそれを HTML として描画するのか、JSON としてパースするのか、ファイルとして保存するのかを自力では判断できません。Content-Type はその判断材料そのものです。日本語のページが文字化けする典型的な原因も、charset の指定漏れでブラウザが別の文字コードだと推測してしまうことにあります。

具体例

$ curl -i https://example.com/api/users HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Content-Length: 52 [{"id":1,"name":"tanaka"},{"id":2,"name":"suzuki"}]

送る側でも同じヘッダを付けます。

await fetch("/api/users", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ name: "tanaka" }), });

つまずきやすいところ

  • POST でヘッダを付け忘れると、サーバー側のフレームワークが本文をパースせず、受け取った値が空になります。「送っているのに届かない」という詰まり方の大半がこれです。

  • フォーム送信の既定は application/x-www-form-urlencoded で、JSON とは本文の形式が違います。サーバー側の受け取り方も変わるため、どちらで送っているかを開発者ツールの Network タブで確認します。

  • ファイルアップロードでは multipart/form-data を使いますが、境界文字列をブラウザが自動で付けるため、手で Content-Type を書くと壊れます。
  • 似た用語との違い

    ヘッダ向き意味
    Content-Type送る側が付ける今送っている本文の形式
    Acceptリクエストで付ける返してほしい形式の希望
    Content-Dispositionレスポンスで付ける画面に表示するかダウンロードさせるか

    知識のつながり

    サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

    現在地Content-TypeWeb

    LEARN BY DOING

    この用語を、教材で使ってみる

    直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

    JavaScriptコースの全編を見る