Welche obligatorischen Informationen muss ein HTTP-Anforderungsheader enthalten?

Antworten:

36

GET / HTTP/1.0 ist eine zulässige HTTP-Anforderung.

Wenn es kein HostHeaderfeld gibt, erhalten Sie möglicherweise nicht die erhofften Ergebnisse, wenn der Zielserver ein virtueller Host ist , der keine eigene IP-Adresse hat, um sich von anderen virtuellen Hosts zu unterscheiden.

HTTP 1.1 benötigt das HostFeld.

gbroiles
quelle
1
Ich habe selbst ein bisschen recherchiert und du hast recht @gbroiles. Für das namensbasierte virtuelle Hosting ist in der Regel ein Browser mit HTTP 1.1 erforderlich. Der Browser sendet den Hostnamen im Hostheader und der Webserver bedient namenbasierte virtuelle Hosts, sofern konfiguriert. Mit älteren Browsern und HTTP 1.0 ist dies zwar möglich, Sie benötigen jedoch eine Problemumgehung wie die ServerPath-Direktive von Apache. Glücklicherweise implementieren neuere Browser Erweiterungen, wenn HTTP 1.0 verwendet wird, um sicherzustellen, dass das Host-Header-Feld gesendet wird. w3.org/Protocols/rfc2616/rfc2616-sec14.html
Stephan Kristyn
1
Gibt es noch Browser, die tatsächlich HTTP 1.0 unterstützen?
Pacerier
Viele Benutzeragenten verwenden HTTP 1.0. Benutzer von Webbrowsern verwenden nach Möglichkeit HTTP 1.1 oder 2.0, können jedoch über einen Proxy zugreifen, der nur HTTP 1.0 unterstützt. Crawler oder Bots können HTTP 1.0 verwenden. Einfache Clients verwenden gerne wgetHTTP 1.0. Beachten Sie, dass für die Unterstützung von HTTP 1.0-Clients keine serverseitigen Anstrengungen erforderlich sind, da ein HTTP 1.1-kompatibler Server HTTP 1.0-Clients unterstützt (HTTP 1.1 wurde als progressive Erweiterung zu HTTP 1.0 entwickelt; nicht kompatible Funktionen wie Chunked) Kodierung und Keep-Alive (standardmäßig deaktiviert für HTTP 1.0-Anforderungen).
Thomasrutter
3

Keiner der HTTP-Header ist in einer Anforderung erforderlich. Es sind auch keine Antwort-Header erforderlich.

All das und mehr in HTTP 1.1 - RFC 2616

Chris S
quelle
15
Du liegst falsch. Gemäß dem hier verlinkten RFC: "Ein Client MUSS in allen HTTP / 1.1-Anforderungsnachrichten ein Host-Header-Feld enthalten". Der HostHeader ist also obligatorisch.
user219882
2
Richtig, aber es ist nicht erforderlich, dass ein Client HTTP / 1.1 verwendet.
Chris S
2
Inhaltslänge oder Übertragungscodierung sind nur dann obligatorisch, wenn einer Entität die Anforderung oder Antwort zugestellt wird, und in vielen Fällen fehlt einer Anforderung oder Antwort eine Entität (z. B. eine GET-Anforderung oder eine 302-Antwort).
Brandon Rhodes
6
Ich kann nicht abstimmen, aber diese Antwort ist falsch. Bitte reparieren oder entfernen.
Vikingsteve
4
Ich stimme Vikingsteve zu. Ihre Antwort impliziert, dass HTTP 1.1 keine erforderlichen Header enthält.
Nullstellensatz