Content-Type

Content-Type 表現ヘッダーは、リソースのメディア種別を示すために使用します。

レスポンスにおいては、 Content-Type ヘッダーはクライアントに返されたコンテンツの実際の種類を伝えます。ブラウザーは MIME を推定し、このヘッダーの値に従わないこともあります。 X-Content-Type-Optionsnosniff に設定すると、この動作を防ぐことができます。

リクエストにおいては (POST または PUT などで)、クライアントがサーバーに実際に送ったデータの種類を伝えます。

ヘッダー種別 表現ヘッダー
禁止ヘッダー名 いいえ
CORS セーフリストレスポンスヘッダー はい
CORS セーフリストリクエストヘッダー はい。 CORS 危険リクエストヘッダーバイトである 0x00-0x1F (0x09 (HT) を除く)、"():<>?@[\]{}、0x7F (DEL) を値に含むことができないという制限付きです。
また、 MIME タイプの解釈値 (引数を除いたもの) が application/x-www-form-urlencoded, multipart/form-data, text/plain の何れかである必要があります。

構文

Content-Type: text/html; charset=UTF-8
Content-Type: multipart/form-data; boundary=something

ディレクティブ

media-type

リソースやデータの MIME タイプです。

charset

標準の文字エンコーディングです。

boundary

マルチパートの本文では boundary ディレクティブが必要で、これはメールゲートウェイを通過しても大丈夫だと知られている文字の中から 1~70 文字で構成され、ホワイトスペースで終了しないものです。これはメッセージの複数パートの境界を囲むために使用します。ふつう、ヘッダーの境界は 2 本のダッシュで始まり、最後の境界には最後にも 2 本のダッシュが入ります。

HTML フォームにおける Content-Type

HTML フォームを送信する POST リクエストでは、リクエストの Content-Type<form> 要素の enctype 属性で指定します。

html
<form action="/" method="post" enctype="multipart/form-data">
  <input type="text" name="description" value="some text" />
  <input type="file" name="myFile" />
  <button type="submit">Submit</button>
</form>

このリクエストはこのように見えます (ここではあまり重要でないヘッダーは省略しています)。

POST /foo HTTP/1.1
Content-Length: 68137
Content-Type: multipart/form-data; boundary=---------------------------974767299852498929531610575

-----------------------------974767299852498929531610575
Content-Disposition: form-data; name="description"

some text
-----------------------------974767299852498929531610575
Content-Disposition: form-data; name="myFile"; filename="foo.txt"
Content-Type: text/plain

(content of the uploaded file foo.txt)
-----------------------------974767299852498929531610575--

仕様書

Specification
HTTP Semantics
# status.206
HTTP Semantics
# field.content-type

ブラウザーの互換性

BCD tables only load in the browser

関連情報