2010-08-29 4 views
1

J'ai un serveur HTTP personnalisé qui implémente le protocole HTTP 1.1. Je n'ai aucun problème à utiliser les connexions persistantes, cependant, je ne reçois jamais 'Connection: Close' d'IE (je n'ai pas testé d'autres navigateurs). Au lieu de cela, le 'receive' expire parce qu'il semble que IE ferme la connexion.En-tête HTTP 'Connection: Close' n'est pas envoyé par IE

Quel en-tête de IE dois-je chercher pour fermer la connexion avec grâce?

+0

Connexion: close est un indicateur que le client n'a pas l'intention de réutiliser la connexion pour les demandes suivantes. Vous ne devriez pas vous attendre à recevoir cet en-tête. Si vous ne voulez pas autoriser keep-alive, vous devez simplement envoyer Connection: close dans les en-têtes de réponse, puis fermez la connexion après avoir renvoyé le corps de la réponse. – EricLaw

Répondre

1

Le paramètre par défaut de l'en-tête "Connection" de 1.1 est "keep-alive" lorsque l'en-tête n'est pas présent. IE ne ferme pas la connexion tout de suite afin qu'il puisse utiliser la même connexion pour les demandes suivantes, puis ferme la connexion après un délai si vous n'envoyez aucune demande immédiatement.

+0

Donc, devrais-je envoyer un '100 - continuer' ou juste laisser le délai de connexion? –

+0

Vous ne pouvez envoyer une réponse '100' que si le client la demande explicitement via un en-tête' Expect: 100-continue', et même seulement en réponse à une demande en attente. Vous devrez donc laisser votre connexion expirer normalement. Comme je l'ai dit, même IE ne sait pas tout de suite si une connexion va être réutilisée ou non, donc elle n'envoie pas d'en-tête 'Connection: close' pour les requêtes HTTP 1.1 –

0

Il n'est pas nécessaire que le navigateur envoie explicitement une connexion: Fermer. Et il fait des délais en 60 secondes, ce qui est défini dans le registre.

Je ne vois pas de problème à gérer avec élégance la déconnexion du client "manuel".

+1

Ce n'est pas que c'est un problème, comme vous le dites. C'est que ce serait bien si cela pouvait être fait avec élégance. Si ce n'est pas possible alors je suppose que ce n'est pas un problème;) –

+0

Eh bien, même si le navigateur envoie toujours cela, vous devrez toujours gérer la situation lorsque la connexion tombe gracieusement. – BarsMonster

Questions connexes