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 requêtes peuvent être envoyées depuis la même connexion TCP.

    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. Ceci est uniquement une performance, destinée à minimiser le temps / bande passante qui serait autrement dépensé en rétablissant une connexion pour chaque demande.

    En ce qui concerne HTTP, il s’agit toujours de requêtes distinctes et doit contenir suffisamment d’informations pour répondre à la demande. C’est l’essence de “l’apasortingdie”. Les demandes ne seront pas associées les unes aux autres en l’absence d’informations partagées que le serveur connaît, ce qui dans la plupart des cas est un identifiant de session dans un cookie.

    De Wikipedia :

    HTTP est un protocole sans état. Un protocole sans état ne nécessite pas que le serveur conserve des informations ou un statut sur chaque utilisateur pendant la durée de plusieurs demandes.

    Mais certaines applications Web peuvent avoir à suivre la progression de l’utilisateur d’une page à l’autre, par exemple lorsqu’un serveur Web est requirejs pour personnaliser le contenu d’une page Web pour un utilisateur. Les solutions pour ces cas incluent:

    • l’utilisation de cookies HTTP.
    • sessions côté serveur,
    • variables cachées (lorsque la page en cours contient un formulaire), et
    • Réécriture d’URL en utilisant des parameters encodés en 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 obligé de suivre l’état sur plusieurs requêtes, 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, en fournissant des données statiques sur un CDN), minimise la quantité de données à transférer. Si les serveurs étaient tenus de maintenir l’état des visites des clients, la structure d’émission et de réponse aux demandes serait plus complexe. La simplicité du modèle est l’une de ses plus grandes caractéristiques.

    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 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.

    Si le protocole HTTP est donné en tant que protocole d’état complet, la fenêtre du navigateur utilise une connexion unique pour communiquer avec le serveur Web pour des demandes multiples sur une application Web. Ils peuvent être en état d’inactivité pendant une longue période. Cela peut créer une situation de connexion maximale au serveur Web, même si la plupart des connexions dans les clients sont inactives.

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

    HTTP est sans état. TCP est avec état. Il n’y a pas de “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 qui est “keep-alive” signifie que le TCP sera réutilisé par les requêtes et réponses HTTP suivantes, au lieu de se déconnecter et de rétablir la connexion TCP en permanence.

    Ce n’est pas apasortingde. HTTP est (généralement) construit sur TCP, qui est à l’état. Il maintient les informations de connexion, au minimum. S’il était construit sur UDP, les choses seraient différentes.

    Dire que HTTP est sans état revient à dire que les programmes informatiques sont sans électrons car les ordinateurs qui les hébergent utilisent les électrons. C’est un non-sens. De même, vous ne pouvez pas séparer complètement HTTP de TCP.

    couches