web-dev-qa-db-fra.com

Pourquoi dit-on que "HTTP est un protocole sans état"?

HTTP a des cookies HTTP. Les cookies permettent au serveur de suivre l'état de l'utilisateur, le nombre de connexions, la dernière connexion, etc.

HTTP a des connexions persistantes (Keep-Alive) où plusieurs demandes peuvent être envoyées à partir de la même connexion TCP.

156
Jose Nobile

Même si plusieurs demandes peuvent être envoyées via la même connexion HTTP, le serveur n'attache aucune signification particulière à leur arrivée sur le même socket. Il s’agit uniquement de performances, destinées à minimiser le temps et la bande passante qui seraient sinon consacrés au rétablissement d’une connexion pour chaque demande.

En ce qui concerne HTTP, il s’agit toujours de demandes distinctes et elles doivent contenir suffisamment d’informations suffisantes pour répondre à la demande. C'est l'essence même de "l'apatridie". Les demandes ne seront pas associées les unes aux autres en l'absence d'informations partagées connues du serveur, qui sont dans la plupart des cas un identifiant de session dans un cookie.

116
cHao

De Wikipedia :

HTTP est un protocole sans état. Un protocole sans état n’oblige pas le serveur à conserver les informations ou le statut de chaque utilisateur pendant plusieurs requêtes.

Toutefois, certaines applications Web peuvent devoir suivre les progrès de l'utilisateur d'une page à l'autre, par exemple lorsqu'un serveur Web est requis pour personnaliser le contenu d'une page Web pour un utilisateur. Les solutions à ces cas incluent:

  • l'utilisation de cookies HTTP.
  • sessions côté serveur,
  • des variables cachées (lorsque la page en cours contient un formulaire), et
  • Réécriture d'URL à l'aide de paramètres codés par URI, par exemple, /index.php?session_id=some_unique_session_code.

Ce qui rend le protocole sans état, c'est que le serveur n'est pas requis pour suivre l'état de plusieurs demandes, pas qu'il ne puisse pas le faire s'il le souhaite. Cela simplifie le contrat entre le client et le serveur et dans de nombreux cas (par exemple, la gestion de données statiques sur un CDN) minimise la quantité de données à transférer. Si des serveurs étaient nécessaires pour conserver l'état des visites des clients, la structure d'émission et de réponse aux demandes serait plus complexe. Dans l’état actuel des choses, la simplicité du modèle est l’une de ses principales caractéristiques.

95
dimo414

Parce qu’un protocole sans état n’exige pas que le serveur conserve les informations de session ou l’état de chaque partenaire de communication pour la durée de plusieurs demandes.

HTTP est un protocole sans état, ce qui signifie que la connexion entre le navigateur et le serveur est perdue une fois la transaction terminée.

20
Rahul Tripathi

HTTP est un système sans connexion et il en résulte que HTTP est un protocole sans état. Le serveur et le client ne se connaissent que pendant une requête en cours. Ensuite, ils s'oublient tous les deux. En raison de cette nature du protocole, ni le client ni le navigateur ne peuvent conserver les informations entre différentes requêtes sur les pages Web.

3
user3496740

HTTP est appelé en tant que protocole sans état, car chaque demande est exécutée indépendamment, sans aucune connaissance des demandes qui ont été exécutées avant, ce qui signifie qu'une fois la transaction terminée, la connexion entre le navigateur et le serveur est terminée. aussi perdu.

Ce qui rend le protocole sans état, c'est que dans sa conception originale, HTTP est un protocole de transfert de fichier relativement simple:

  1. faire une demande pour un fichier nommé par une URL,
  2. récupère le fichier en réponse,
  3. déconnecter.

Aucune relation n'a été maintenue entre une connexion et une autre, même à partir du même client. Cela simplifie le contrat entre le client et le serveur et, dans de nombreux cas, minimise la quantité de données à transférer.

3
Mobeen Sarwar

Si le protocole HTTP est défini comme protocole d'état complet, la fenêtre du navigateur utilise une seule connexion pour communiquer avec le serveur Web, mais elle permet également à la fenêtre du navigateur d'engager les connexions entre la fenêtre du navigateur et les serveurs Web. Cela peut créer le problème d'atteindre le nombre maximal de connexions du serveur Web, même si la plupart des connexions des clients sont inactives.

3
Rajasekhar reddy

The HTTP request/response cycle

Un aspect important du développement Web qui diffère nettement de la programmation de bureau traditionnelle est le fait que HTTP est essentiellement un sans état protocole filaire.

  • Dès que le serveur Web envoie une réponse au navigateur client, tout ce qui concerne l'interaction précédente est oublié.
  • Ce n'est certainement pas le cas dans une application de bureau traditionnelle, où l'état de l'exécutable est le plus souvent actif jusqu'à ce que l'utilisateur ferme la fenêtre principale de l'application.
  • Étant donné ce point, en tant que développeur Web, il vous appartient de prendre des mesures spécifiques pour "mémoriser" des informations (telles que des éléments d'un panier, des numéros de carte de crédit et des adresses personnelles) relatives aux utilisateurs actuellement connectés à votre site. .
  • (Out of the box)ASP.NET fournit de nombreuses manières de gérer l'état, à l'aide de techniques telles que les variables de session, les cookies et le cache d'application, ainsi que l'API de gestion de profil ASP.NET.
0
Tahir77667

HTTP est sans état. TCP est avec état. Il n'y a pas de soi-disant "connexion HTTP", mais seulement "requête HTTP" et "réponse HTTP". Nous n'avons besoin de rien pour maintenir une autre "requête HTTP". Un en-tête de connexion "Keep-Alive" signifie que le TCP sera réutilisé par les requêtes et réponses HTTP ultérieures, au lieu de se déconnecter et de rétablir la connexion TCP tout le temps.

0
Xing