Como você observou corretamente, o cabeçalho Accept é usado pelos clientes HTTP para informar ao servidor quais tipos de conteúdo eles aceitarão. O servidor enviará de volta uma resposta, que incluirá um cabeçalho de tipo de conteúdo informando ao cliente qual é o tipo de conteúdo realmente retornado.
No entanto, como você deve ter notado, as solicitações HTTP também podem conter cabeçalhos de tipo de conteúdo. Por quê? Bem, pense em solicitações POST ou PUT . Com esses tipos de solicitação, o cliente está realmente enviando um monte de dados para o servidor como parte da solicitação, e o cabeçalho Content-Type informa ao servidor quais são realmente os dados (e, portanto, determina como o servidor os analisará).
Em particular, para uma solicitação POST resultante de um envio de formulário HTML, o Tipo de Conteúdo da solicitação (normalmente) será um dos tipos de conteúdo padrão abaixo, conforme especificado pelo enctype
atributo na <form>
tag:
application/x-www-form-urlencoded
(padrão, mais antigo, mais simples, um pouco menos caro para pequenas quantidades de texto ASCII simples, sem suporte para upload de arquivos)
multipart/form-data
(mais recente, adiciona suporte para upload de arquivos, mais eficiente para grandes quantidades de dados binários ou texto não ASCII)