Content-Type

O cabeçalho Content-Type é utilizado para indicar o tipo de arquivo 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.

tipo de cabeçalho Cabeçalho de entidade
Nome de cabeçalho proibido não
Cabeçalho de resposta na lista segura do CORS sim

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.

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