2010-08-06 5 views
8

J'ai un client HTTP qui définit l'en-tête de connexion à la valeur suivante quand je fais une demande:Un serveur doit-il adhérer à la connexion HTTP: fermer l'en-tête envoyé par un client?

Connection: close 

Toutefois, lorsque le serveur envoie une réponse, il met l'en-tête de Keep-Alive:

Connection: Keep-Alive 

Cela me semble intuitivement faux, et je me demande comment le client devrait gérer une telle réponse du serveur? Aussi pourquoi un serveur répondrait-il avec Keep-Alive, quand le client a demandé que la connexion soit fermée, est-ce valable?

Selon la RFC HTTP.

« HTTP/1.1 définit l'option « lien étroit » pour l'émetteur pour signaler que la connexion est fermée après l'achèvement de la réaction, par exemple,

Connection: close 
Dans les champs d'en-tête de la demande ou de la réponse, les champs

indiquent que la connexion NE DEVRAIT PAS être considérée comme "persistante" (section 8.1) après la fin de la demande/réponse en cours. "

Répondre

13

C'est bon. Vous dites au serveur que vous ne prenez pas en charge les connexions persistantes et il vous le dit. L'une ou l'autre des parties est complètement valide pour fermer la connexion - c'est plutôt un message sur ce que les deux prennent en charge plutôt qu'une commande "VOUS DEVEZ FERMER CETTE CONNEXION".

6

Le client indique I ferme la connexion lorsque la demande/réponse en cours est terminée, ou en d'autres termes, vous ne prenez pas en charge les connexions persistantes. Autrement dit, il ne dit pas au serveur de fermer la connexion. Le serveur répond qu'il prend en charge les connexions persistantes (keep-alive).

Comme vous avez indiqué au serveur que vous ne prenez pas en charge la connexion permanente, vous devez fermer la connexion lorsque vous avez lu la réponse.

Questions connexes