Come vengono trasferiti i cookie nel protocollo HTTP?

Come vengono trasferiti i cookie nel protocollo HTTP?

Il server invia il seguente comando nella sua intestazione di risposta per impostare un campo cookie.

Set-Cookie: nome = valore

Se è presente un set di cookie, il browser invia quanto segue nell’intestazione della richiesta.

Cookie: nome = valore

Vedere l’articolo Cookie HTTP su Wikipedia per ulteriori informazioni.

I cookie vengono passati come intestazioni HTTP, sia nella richiesta (client -> server), sia nella risposta (server -> client).

Oltre a ciò che è scritto in altre risposte, altri dettagli relativi al percorso del cookie, l’età massima del cookie, indipendentemente dal fatto che siano protetti o meno, vengono passati anche nell’intestazione della risposta Set-Cookie. Per esempio:

Set-Cookie: name = value [ ; expires= ; expires= date ] [ ; domain= ; domain= dominio ] [ ; path= ; path= percorso ] [ ; secure ; secure ]


Tuttavia, non tutti questi dettagli vengono passati al server dal client quando si effettua la richiesta HTTP successiva.

Puoi anche impostare il flag HttpOnly alla fine del tuo cookie, per indicare che il tuo cookie è httponly e non deve poter accedere, in script tramite codice javascript. Questo aiuta a prevenire attacchi come il dirottamento delle sessioni.

Per ulteriori informazioni, vedere RFC 2109 . Guarda anche l’articolo di Nicholas C. Zakas, i cookie HTTP spiegati .

creare script di esempio come risp:

 #!/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" 

quindi rendi eseguibile ed esegui in questo modo.

 ./resp | nc -l -p 12346 

apri il browser e cerca l’URL: http: // localhost: 1236 vedrai il valore del cookie che viene inviato dal browser

     [aaa @ bbbbbbbb] $ ./resp |  nc -l -p 12346
     GET / HTTP / 1.1
     Host: xxx.xxx.xxx.xxx:12346
     Connessione: keep-alive
     Cache-Control: max-age = 0
     Accetta: text / html, application / xhtml + xml, application / xml; q = 0.9, image / webp, * / *; q = 0.8
     Aggiornamento - Richieste non protette: 1
     User-Agent: Mozilla / 5.0 (Windows NT 6.1) AppleWebKit / 537.36 (KHTML, come Gecko) Chrome / 49.0.2623.112 Safari / 537.36
     Accept-Encoding: gzip, deflate, sdch
     Accept-Language: en-US, en; q = 0.8, ru; q = 0.6
     Cookie: name = F