El host
encabezado le dice al servidor web qué host virtual usar (si está configurado). Incluso puede tener el mismo host virtual utilizando varios alias (= dominios y dominios comodín). En este caso, aún tiene la posibilidad de leer ese encabezado manualmente en su aplicación web si desea proporcionar un comportamiento diferente según los diferentes dominios dirigidos. Esto es posible porque en su servidor web puede (y si no me equivoco debe) configurar un vhost para que sea el host predeterminado. Este vhost predeterminado se utiliza siempre que el host
encabezado no coincide con ninguno de los hosts virtuales configurados.
Eso significa: lo hace bien, aunque decir "múltiples hosts" puede ser algo engañoso: el host (la máquina direccionada) es el mismo, lo que realmente se resuelve en la dirección IP son diferentes nombres de dominio (incluidos los subdominios) que también se refieren a como nombres de host (¡pero no hosts!).
Aunque no es parte de la pregunta, un dato curioso: esta especificación generó problemas con SSL en los primeros días porque el servidor web tiene que entregar el certificado que corresponde al dominio que el cliente ha abordado. Sin embargo, para saber qué certificado utilizar, el servidor web debería haber conocido el nombre de host direccionado de antemano. Pero debido a que el cliente envía esa información solo a través del canal encriptado (lo que significa: después de que el certificado ya se haya enviado), el servidor tuvo que asumir que usted navegó por el host predeterminado. Eso significaba un dominio protegido por SSL por combinación de puerto / dirección IP.
Esto se ha superado con la indicación del nombre del servidor ; sin embargo, eso nuevamente rompe algo de privacidad, ya que el nombre del servidor ahora se transfiere nuevamente en texto sin formato, por lo que todos los intermediarios verán a qué nombre de host está tratando de conectarse.
Aunque el servidor web conocería el nombre de host de la Indicación del nombre del servidor, el host
encabezado no está obsoleto, porque la información de la Indicación del nombre del servidor solo se usa dentro del protocolo de enlace TLS. Con una conexión no segura, no hay ninguna indicación de nombre de servidor, por lo que el host
encabezado sigue siendo válido (y necesario).
Otro dato divertido: la mayoría de los servidores web (si no todos) rechazan su solicitud http si no contiene exactamente un host
encabezado, incluso si podría omitirse porque solo hay configurado el vhost predeterminado. Eso significa que la información mínima requerida en una solicitud http- (get-) es la primera línea que contiene METHOD
RESOURCE
y PROTOCOL VERSION
y al menos el host
-header, así:
GET /someresource.html HTTP/1.1
Host: www.example.com
En la documentación de MDN sobre el encabezado del host , en realidad lo expresan así:
Se debe enviar un campo de encabezado de host en todos los mensajes de solicitud HTTP / 1.1. Se enviará un código de estado 400 (Solicitud incorrecta) a cualquier mensaje de solicitud HTTP / 1.1 que no tenga un campo de encabezado de host o contenga más de uno.
Como lo mencionó Darrel Miller, las especificaciones completas se pueden encontrar en RFC7230 .
vhost
solo 3 ocurrencias cercanas devirtual host
con un significado que no se acerca a su frase y 12 para ladefault
mayoría sobre el puerto,by the book
configurado correctamente (completamente )?default
palabra encontrada por la búsqueda,Otherwise, the authority component is assigned the default name configured for the server
virtual host
mi búsqueda en tools.ietf.org/html/rfc7230 están en formatoAppendix A. HTTP Version History
. parece que su búsqueda encontró otro.Siempre recomendaría acudir a la fuente autorizada cuando intente comprender el significado y el propósito de los encabezados HTTP.
https://tools.ietf.org/html/rfc7230#section-5.4
fuente