Sollte ein Server die HTTP-Verbindung einhalten: Schließen Sie den Header, der von einem Client gesendet wurde?

8

Ich habe einen HTTP-Client, der den Connection-Header auf den folgenden Wert setzt, wenn ich eine Anfrage mache:

%Vor%

Wenn der Server jedoch eine Antwort sendet, setzt er den Header auf Keep-Alive:

%Vor%

Das scheint mir intuitiv falsch zu sein, und ich frage mich, wie der Client mit solch einer Antwort vom Server umgehen sollte? Auch warum würde ein Server mit Keep-Alive antworten, wenn der Client nach dem Schließen der Verbindung gefragt hat, ist das gültig?

Nach dem HTTP-RFC:

"HTTP / 1.1 definiert die Verbindungsoption" close ", damit der Absender signalisiert, dass die Verbindung nach Abschluss der Antwort geschlossen wird. Beispiel:

%Vor%

in den Anforderungs- oder Antwortkopfzeilen zeigt an, dass die Verbindung NICHT als "persistent" (Abschnitt 8.1) betrachtet werden sollte, nachdem die aktuelle Anfrage / Antwort abgeschlossen ist. "

    
alphadevx 06.08.2010, 14:36
quelle

2 Antworten

13

Das ist in Ordnung. Sie sagen dem Server, dass Sie keine persistenten Verbindungen unterstützen, und es sagt Ihnen, dass dies der Fall ist. Jede der beiden Parteien ist beim Schließen der Verbindung vollständig gültig - es handelt sich eher um eine Aussage darüber, was beide unterstützen, als um einen Befehl, den Sie unbedingt schließen müssen.

    
Gandalf 06.08.2010, 17:20
quelle
6

Der Client sagt, dass I die Verbindung schließt, wenn die aktuelle Anfrage / Antwort abgeschlossen ist, oder mit anderen Worten, dass Sie persisten Verbindungen nicht unterstützen. Das heißt, es teilt dem Server nicht mit, die Verbindung zu schließen. Der Server antwortet, dass er persistente Verbindungen unterstützt (keep-alive).

Da Sie dem Server mitgeteilt haben, dass Sie keine dauerhafte Verbindung unterstützen, sollten Sie die Verbindung schließen, wenn Sie die Antwort gelesen haben.

    
nos 06.08.2010 17:33
quelle

Tags und Links