¿Cuál es la información obligatoria que debe contener un encabezado de solicitud HTTP?

29

¿Cuál es la información obligatoria que debe contener un encabezado de solicitud HTTP?

Stephan Kristyn
fuente
stackoverflow
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Respuestas:

36

GET / HTTP/1.0 es una solicitud HTTP legal.

Si no hay un Hostcampo de encabezado, es posible que no obtenga los resultados que esperaba si el servidor de destino es un host virtual que no tiene su propia dirección IP para distinguirse de otros hosts virtuales.

HTTP 1.1 requiere el Hostcampo.

gbroiles
fuente
1
Investigué un poco y tengo razón @gbroiles. Para el alojamiento virtual basado en nombres, se requiere en general un navegador con HTTP 1.1. Los navegadores envían el nombre de host en el encabezado de host y el servidor web sirve hosts virtuales basados ​​en nombre si está configurado. Con navegadores más antiguos y HTTP 1.0 eso es algo posible, pero necesita una solución alternativa como la Directiva ServerPath de apache. Afortunadamente, los navegadores más nuevos implementan extensiones cuando usan HTTP 1.0 para garantizar el envío del campo de encabezado de host. w3.org/Protocols/rfc2616/rfc2616-sec14.html
Stephan Kristyn el
1
¿Todavía hay navegadores que realmente hacen HTTP 1.0?
Pacerier
Muchos agentes de usuario usan HTTP 1.0. Las personas que usan navegadores web usarán HTTP 1.1 o 2.0 cuando sea posible, pero pueden acceder a través de un proxy que solo sea compatible con HTTP 1.0. Los rastreadores o bots pueden usar HTTP 1.0. Clientes simples como el wgetuso de HTTP 1.0. Tenga en cuenta que no se requiere ningún esfuerzo del lado del servidor para admitir clientes HTTP 1.0, porque un servidor compatible con HTTP 1.1 admitirá clientes HTTP 1.0 (HTTP 1.1 está diseñado para ser una mejora progresiva sobre HTTP 1.0; características no compatibles como fragmentado codificación y keep-alive predeterminado a desactivado para solicitudes HTTP 1.0).
thomasrutter
3

Ninguno de los encabezados HTTP son necesarios en una solicitud. Tampoco se requieren encabezados de respuesta.

Todo eso y más en HTTP 1.1 - RFC 2616

Chris S
fuente
15
Estás equivocado. Según el RFC que vinculó aquí: "Un cliente DEBE incluir un campo de encabezado de host en todos los mensajes de solicitud HTTP / 1.1". Entonces el Hostencabezado es obligatorio.
user219882
2
Correcto, pero no es necesario que un cliente use HTTP / 1.1 en primer lugar.
Chris S
2
La longitud de contenido o la codificación de transferencia solo son obligatorias si se entrega una entidad con la solicitud o respuesta, y en muchos casos una solicitud o respuesta carecerá de una entidad (como una solicitud GET o una respuesta 302).
Brandon Rhodes
66
No puedo rechazar, pero esta respuesta es incorrecta. Por favor arreglar o eliminar.
vikingsteve
44
Estoy de acuerdo con vikingsteve. Su respuesta implica que HTTP 1.1 no tiene ningún encabezado requerido.
nullstellensatz