Comment les cookies sont-ils transmis dans le protocole HTTP?
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.
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).
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 .
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