Quais são as informações obrigatórias que um cabeçalho de solicitação HTTP deve conter?

Respostas:

36

GET / HTTP/1.0 é uma solicitação HTTP legal.

Se não houver um Hostcampo de cabeçalho, você poderá não obter os resultados esperados se o servidor de destino for um host virtual que não tenha seu próprio endereço IP para se diferenciar de outros hosts virtuais.

HTTP 1.1 requer o Hostcampo

gbroiles
fonte
1
Pesquisei um pouco e você está certo @gbroiles. Para hospedagem virtual baseada em nome, geralmente é necessário um navegador com HTTP 1.1. Os navegadores enviam o nome do host no cabeçalho do host e o servidor Web serve hosts virtuais baseados em nome, se configurados. Com navegadores mais antigos e com o HTTP 1.0, isso é possível, mas você precisa de uma solução alternativa, como a Diretiva ServerPath do apache. Felizmente, navegadores mais novos implementam extensões ao usar o HTTP 1.0 para garantir o envio do campo de cabeçalho do host. w3.org/Protocols/rfc2616/rfc2616-sec14.html
Stephan Kristyn
1
Ainda existem navegadores que realmente executam HTTP 1.0?
Pacerier
Muitos agentes do usuário usam HTTP 1.0. As pessoas que usam navegadores da Web usarão o HTTP 1.1 ou 2.0 sempre que possível, mas poderão acessar por meio de um proxy que suporta apenas o HTTP 1.0. Rastreadores ou bots podem usar HTTP 1.0. Clientes simples como wgetusam o HTTP 1.0. Observe que não há nenhum esforço do lado do servidor necessário para oferecer suporte a clientes HTTP 1.0, porque um servidor compatível com HTTP 1.1 oferecerá suporte a clientes HTTP 1.0 (o HTTP 1.1 foi criado para ser um aprimoramento progressivo em cima do HTTP 1.0; recursos não compatíveis, como chunked codificação e keep-alive padrão para off para solicitações HTTP 1.0).
thomasrutter
3

Nenhum dos cabeçalhos HTTP é necessário em uma solicitação. Também não há cabeçalhos de resposta necessários.

Tudo isso e muito mais no HTTP 1.1 - RFC 2616

Chris S
fonte
15
Você está enganado. De acordo com a RFC que você vinculou aqui: "Um cliente DEVE incluir um campo de cabeçalho Host em todas as mensagens de solicitação HTTP / 1.1". Portanto, o Hostcabeçalho é obrigatório.
user219882
2
Correto, mas não há exigência de que um cliente use HTTP / 1.1 em primeiro lugar.
Chris S
2
O comprimento do conteúdo ou a codificação de transferência são obrigatórios apenas se uma entidade for entregue com a solicitação ou resposta e, em muitos casos, uma solicitação ou resposta carecerá de uma entidade (como uma solicitação GET ou uma resposta 302).
22414 Brandon Rhodes #
6
Não posso votar, mas esta resposta está errada. Corrija ou remova.
vikingsteve
4
Eu concordo com vikingsteve. Sua resposta implica que o HTTP 1.1 não possui nenhum cabeçalho necessário.
Nullstellensatz