Tanto quanto eu entendi, existem dois lugares onde definir o tipo de conteúdo:
- O cliente define um tipo de conteúdo para o corpo que está enviando para o servidor (por exemplo, para postagem)
- O servidor define um tipo de conteúdo para a resposta.
Isso significa que não preciso definir um tipo de conteúdo para todas as minhas solicitações get (lado do cliente). E se eu posso ou devo que tipo de conteúdo seria esse?
Também li em algumas postagens que o tipo de conteúdo do cliente especifica que tipo de conteúdo o cliente gostaria de receber. Então, talvez o meu ponto 1 não esteja certo?
fonte
SHOULD NOT
incluem um tipo de conteúdo. Temos uma citação explícita?As solicitações de obtenção não devem ter o tipo de conteúdo porque elas não possuem uma entidade de solicitação (ou seja, um corpo)
fonte
As solicitações GET podem ter cabeçalhos "Aceitar", que indicam quais tipos de conteúdo o cliente entende. O servidor pode usá-lo para decidir qual tipo de conteúdo enviar.
Eles são opcionais.
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
fonte
A resposta aceita está errada. A cotação está correta, a afirmação de que PUT e POST devem tê-la está incorreta. Não há exigência de que PUT ou POST realmente tenham conteúdo adicional. Também não existe uma proibição de que o GET realmente tenha conteúdo.
Os RFCs dizer exatamente o que eles querem dizer .. IFF seu lado (cliente ou servidor de origem) será o envio de conteúdo adicional, além dos cabeçalhos HTTP, ele deve especificar um cabeçalho Content-Type. Mas observe que é permitido omitir o Tipo de Conteúdo e ainda incluir conteúdo (por exemplo, usando um cabeçalho Comprimento do Conteúdo).
fonte
Resposta curta: Muito provavelmente, não, você não precisa um cabeçalho do tipo de conteúdo para solicitações HTTP GET. Mas as especificações também não parecem excluir um cabeçalho de tipo de conteúdo para HTTP GET.
Materiais de suporte:
"Tipo de conteúdo" faz parte dos metadados da representação (por exemplo, carga útil). Citado na seção 3.1 da RFC 7231 :
Citado na seção 3.1.1.5 da RFC 7231 (a propósito, a resposta escolhida atual teve um erro de digitação no número da seção):
Nesse sentido, um
Content-Type
cabeçalho não é realmente sobre uma solicitação HTTP GET (ou uma solicitação POST ou PUT, nesse caso). É sobre a carga útil dentro de qualquer solicitação. Portanto, se não houver carga útil, não será necessárioContent-Type
. Na prática, alguma implementação foi adiante e fez essa suposição compreensível. Citado no comentário de Adam :No entanto, estritamente falando, as especificações em si não descartam a possibilidade de o HTTP GET conter uma carga útil. Citado na seção 4.3.1 da RFC 7231 :
Portanto, se o seu HTTP GET incluir uma carga útil por qualquer motivo, um
Content-Type
cabeçalho provavelmente também será razoável.fonte
O problema de não passar o tipo de conteúdo em uma mensagem GET é que, com certeza, o tipo de conteúdo é irrelevante porque o lado do servidor determina o conteúdo de qualquer maneira. O problema que encontrei é que agora existem muitos lugares que configuram seus serviços da web para serem inteligentes o suficiente para escolher o tipo de conteúdo que você passa e retornar a resposta no 'tipo' solicitado. Por exemplo. No momento, estamos enviando mensagens para um local com o padrão JSON, no entanto, eles configuraram o serviço da Web para que, se você passar um tipo de conteúdo de xml, eles retornem o xml em vez do padrão JSON. Que eu acho que daqui para frente é uma ótima idéia
fonte