Según RFC 2616, que define HTTP/1.1, el encabezado Host:
es obligatorio.¿Cuándo podría el encabezado del host HTTP ser indefinido?
Un cliente DEBE incluir un campo de encabezado de host en todos los mensajes de solicitud HTTP/1.1.
Pero el PHP manual implica que podría estar vacío:
'HTTP_HOST': El contenido de la cabecera Host: de la petición actual, si es que existe.
¿En qué situaciones podría este encabezado, y por lo tanto $_SERVER['HTTP_HOST']
, estar vacío? ¿Podría mi aplicación depender de que esté allí?
El encabezado 'Host:' sigue siendo 'obligatorio' según [HTTPbis] (http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-14#appendix-B.1.1) , pero eso no significa que siempre estará presente. Apache maneja su ausencia correctamente (aunque no alcanzará ningún vhost configurado). – mario
@mario: ¿Hay clientes HTTP/1.1 reales en estado salvaje que no envían el encabezado 'Host:'? – Tim
No los consideraría clientes reales, y ciertamente ninguno de los navegadores y bibliotecas contemporáneos lo hacen. Pero cualquier script PHP hecho a mano podría. Pero aún así, es principalmente un problema de configuración, no relevante para los fantasmas de Apache. HTTP_HOST es preseleccionado por Apache, y no me preocuparía que esté vacío en la práctica. Caso de borde poco probable. – mario