web-dev-qa-db-fra.com

Comment les cookies sont-ils transmis dans le protocole HTTP?

Comment les cookies sont-ils transmis dans le protocole HTTP?

231
jai

Le serveur envoie les éléments suivants dans son en-tête de réponse pour définir un champ de cookie.

Set-Cookie: nom = valeur

Si un cookie est défini, le navigateur envoie les éléments suivants dans l'en-tête de sa requête.

Cookie: nom = valeur

Voir l'article HTTP Cookie sur Wikipedia pour plus d'informations.

279
deinst

Les cookies sont transmis en tant qu'en-têtes HTTP, à la fois dans la demande (client -> serveur) et dans la réponse (serveur -> client).

32
Douglas Leeder

Outre ce qui est écrit dans d'autres réponses, d'autres détails sont liés au chemin du cookie, à son âge maximal, sécurisé ou non également transmis dans l'en-tête de réponse Set-Cookie. Par exemple:

Set-Cookie: nom = valeur [; expires= date ] [; domain= domaine ] [; path= chemin ] [; secure]


Cependant, toutes ces informations ne sont pas renvoyées au serveur par le client lors de la prochaine requête HTTP.

Vous pouvez également définir la balise HttpOnly à la fin de votre cookie pour indiquer que votre cookie est présentement et qu'il ne doit pas être autorisé à y accéder, dans les scripts, à l'aide de code javascript. Cela aide à prévenir des attaques telles que le détournement de session.

Pour plus d'informations, voir RFC 2109 . Jetez également un coup d'œil à l'article de Nicholas C. Zakas, Expliquez les cookies HTTP .

29

créer un exemple de script sous la forme suivante:

#!/bin/bash

http_code=200
mime=text/html

echo -e "HTTP/1.1 $http_code OK\r"
echo "Content-type: $mime"
echo
echo "Set-Cookie: name=F"

puis rendre exécutable et exécuter comme ça.

./resp | nc -l -p 12346

ouvrez le navigateur et parcourez l'URL: http: // localhost: 1236 vous verrez la valeur du cookie envoyée par le navigateur.

 [aaa @ bbbbbbbb] $ ./resp | nc -l -p 12346 
 GET/HTTP/1.1 
 Hôte: xxx.xxx.xxx.xxx:12346
 Connexion: garder en vie 
 Cache-Control : max-age = 0 
 Accepter: text/html, application/xhtml + xml, application/xml; q = 0,9, image/webp, */*; q = 0,8 
 Mise à niveau non sécurisée -Requests: 1 
 Agent utilisateur: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/49.0.2623.112 Safari/537.36 
 Accepter l'encodage: gzip, déflater , sdch 
 Accept-Language: en-US, en; q = 0,8, ru; q = 0,6 
 Cookie: nom = F
13
FariZ