Content-Type

O cabeçalho Content-Type é utilizado para indicar o tipo de arquivo (en-US) do recurso.
 
Em respostas, o Content-Type diz para o client qual é o tipo de conteúdo que a resposta, de fato, tem. Alguns browsers vão realizar o chamado "MIME Sniffing" em alguns casos e não vão, necessariamente, seguir o valor declarado por este cabeçalho. Para previnir este comportamento é possível definir o cabeçalho X-Content-Type-Options para o valor nosniff.
 
Em requisições, como POST ou PUT, o client diz ao servidor qual o tipo de dado que está, de fato, sendo enviado.
 

Sintaxe

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

Diretivas

media-type
O MIME type do recurso ou dado.
charset
O encoding da string
boundary
Para entidades do tipo multipart, a diretiva boundary é obrigatória. Ela consiste em uma sequencia de 1 a 70 caracteres de um conjunto conhecido por sua robustez em gateways de e-mail, e não podem terminar com espaço em branco. É utilizado para encapsular as bordas das multiplas partes da mensagem.

Exemplos

Content-Type em formulários HTML

Em uma requisição POST, resultado de uma submissão de um formulário HTML, o Content-Type da requisição é especificado pelo atributo enctype do elemento <form> do 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>

A requisição vai parecer com isto (alguns headers não importantes foram omitidos):

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

Especificações

Especificação Título
RFC 7233, sessão 4.1: Content-Type in multipart Hypertext Transfer Protocol (HTTP/1.1): Range Requests
RFC 7231, sessão 3.1.1.5: Content-Type Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content

Compatibilidade com navegadores

BCD tables only load in the browser

Ver também