Dies ist normales und erwartetes Verhalten gemäß RFC 2616 :
Anwendungen, die dieser Spezifikation zumindest bedingt entsprechen, MÜSSEN in ihren Nachrichten eine HTTP-Version von "HTTP / 1.1" verwenden und MÜSSEN dies für alle Nachrichten tun, die nicht mit HTTP / 1.0 kompatibel sind. Weitere Informationen zum Senden bestimmter HTTP-Versionswerte finden Sie in RFC 2145.
RFC 2145 erweitert dies :
Ein HTTP-Server SOLLTE eine Antwortversion senden, die der höchsten Version entspricht, für die der Server mindestens bedingt kompatibel ist und deren Hauptversion kleiner oder gleich der in der Anforderung empfangenen Version ist. Ein HTTP-Server darf KEINE Version senden, für die er nicht mindestens bedingt kompatibel ist. Ein Server kann eine 505-Antwort (HTTP-Version nicht unterstützt) senden, wenn keine Antwort mit der in der Clientanforderung verwendeten Hauptversion gesendet werden kann.
Ein HTTP-Server kann eine niedrigere Antwortversion senden, wenn bekannt ist oder vermutet wird, dass der Client die HTTP-Spezifikation falsch implementiert. Dies sollte jedoch nicht die Standardeinstellung sein. Dies sollte NICHT erfolgen, wenn die Anforderungsversion HTTP / 1.1 oder höher ist.
Auf Englisch bedeutet dies: Wenn der Client eine HTTP / 1.0-Anforderung sendet, ist entweder eine HTTP / 1.0-Antwort oder HTTP / 1.1 akzeptabel, HTTP / 1.1 wird jedoch bevorzugt.
Der Grund dafür ist, dass ein Ende möglicherweise die höchste HTTP-Version ankündigt, die es unterstützen kann, sodass das andere Ende möglicherweise die Protokollunterstützung aktualisiert (falls möglich). Beide Enden entscheiden dann, mit welcher Protokollversion sie beide leben können. Dieses Design hilft auch bei fehlerhaften Implementierungen, wie RFC 2145 feststellte.
Zu dieser Zeit war auch vorgesehen, dass es weitere Versionen des HTTP-Protokolls geben könnte, sowohl kleinere als auch größere Versionen, und die Regeln sollten dazu beitragen, die Interoperabilität sicherzustellen. Der RFC-ignorante Ansatz von Google kann nach Abschluss von HTTP / 2.0 unterbrochen werden. (Sie kennen es in seiner Entwurfsform als SPDY .)
curl -0 -v 'http://www.google.com/foo'
,curl -v 'http://www.google.com/foo'
, sie response 1.0 oder 1.1 - Version von 404 korrekt , aber nicht in meinem Fall.Es sendet Ihnen tatsächlich eine HTTP / 1.0-kompatible Antwort. Es werden keine Funktionen wie Keepalive verwendet, für die HTTP / 1.1 erforderlich ist.
Der Grund dafür ist, dass der Server auf billige Weise sagen kann:
(Hinweis: Wenn der Server ein fiktives HTTP / 1.8 unterstützt, würde er damit antworten.)
Dies erspart Ihnen in einigen Situationen eine zusätzliche Anfrage. Wenn Sie 3 verschiedene URIs von einem Server abrufen müssen, können Sie den ersten als HTTP / 1.0 senden und dann auf die höchste Version wechseln, die sowohl Sie als auch der Server für die nachfolgenden Anforderungen unterstützen.
quelle