Pourquoi est-il dit 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 requêtes peuvent être envoyées à partir de la même connexion TCP.

130
demandé sur Rick 2012-11-02 21:21:13

7 réponses

Même si plusieurs requêtes 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. C'est uniquement une chose de performance, destinée à minimiser le temps/bande passante qui serait autrement passé à rétablir une connexion pour chaque requête.

En ce qui concerne HTTP, ce sont toutes des requêtes distinctes et doivent contenir suffisamment d'informations pour répondre à la requête. C'est l'essence même de "apatridie". Les requêtes ne seront pas associées les unes aux autres en l'absence d'informations partagées que le serveur connaît, qui dans la plupart des cas est un identifiant de session dans un cookie.

93
répondu cHao 2012-11-02 17:37:26

À Partir De Wikipedia:

HTTP est un protocole sans état. Un protocole sans état ne nécessite pas le serveur pour conserver les informations ou l'état de chaque utilisateur pour durée des demandes multiples.

Mais certaines applications web peuvent avoir à suivre la progression de l'utilisateur à partir de page à page, par exemple quand un serveur web est nécessaire pour personnaliser le contenu d'une page web pour un utilisateur. Solutions pour ces cas inclure:

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

Ce qui rend le protocole apatrides, c'est que le serveur n'est pas nécessaire pour suivre l'état sur plusieurs demandes, non pas qu'il ne peut pas le faire s'il le veut. Cela simplifie le contrat entre le client et le serveur, et dans de nombreux cas (par exemple, servir des données statiques sur un CDN) minimise la quantité de données à transférer. Si les serveurs étaientnécessaires pour maintenir l'état des visites des clients, la structure d'émission et de réponse aux demandes serait plus complexe. En l'état, la simplicité du modèle est l'une de ses plus grandes caractéristiques.

86
répondu dimo414 2016-01-11 19:16:03

Parce qu'un protocole sans état ne nécessite pas que le serveur conserve les informations de session ou l'état de chaque partenaire de communication pendant la durée de plusieurs requêtes.

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.

19
répondu Rahul Tripathi 2012-11-02 17:25:05

Si le protocole HTTP est donné en tant que protocole complet D'État, la fenêtre du navigateur utilise une seule connexion pour communiquer avec le serveur web pour plusieurs requêtes données à l'application web.cela donne la possibilité à la fenêtre du navigateur d'engager les connexions entre la fenêtre du navigateur et les serveurs web pendant longtemps et de les garder en état inactif pendant longtemps.Cela peut créer la situation d'atteindre les connexions maximales du serveur web même si la plupart des connexions dans les clients sont inactives.

3
répondu Rajasekhar reddy 2014-01-21 05:56:40

HTTP est un protocole sans connexion et ceci est un résultat direct que HTTP est un protocole sans état. Le serveur et le client ne sont conscients l'un de l'autre que lors d'une requête en cours. Par la suite, deux d'entre eux oublient les uns des autres. En raison de cette nature du protocole, ni le client ni le navigateur ne peuvent conserver des informations entre différentes demandes sur les pages web.

3
répondu user3496740 2014-04-04 06:29:25

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 être maintenu pour faire une autre "requête HTTP". Un en-tête de connexion qui est "keep-alive" signifie que le TCP sera réutilisé par les requêtes et réponses HTTP suivantes, au lieu de déconnecter et de rétablir la connexion TCP tout le temps.

0
répondu Xing 2018-06-25 12:59:26

Ce n'est pas apatride. HTTP est (généralement) construit sur TCP, qui est avec État. Il maintient les informations de connexion, à tout le moins. Si elle était construite sur UDP, les choses seraient différentes.

Dire que HTTP est sans état, c'est comme dire que les programmes informatiques sont sans électrons parce que les ordinateurs qui les hébergent utilisent les électrons. C'est absurde. De la même manière, vous ne pouvez pas séparer complètement HTTP de TCP.

couche

-3
répondu Andrew 2017-08-22 17:19:26