2010-08-12 12 views

risposta

222

Il server invia quanto segue nell'intestazione della risposta per impostare un campo cookie.

Set-Cookie:nome=valore

Se v'è un insieme di cookie, quindi il browser invia il seguente nella sua intestazione richiesta.

Cookie:nome=valore

vedere l'articolo HTTP Cookie a Wikipedia per ulteriori informazioni.

+0

È vero che il cookie funziona solo con il verbo GET/POST, ma non CONNECT? – PerlDev

+5

@PerlDev Non c'è nulla che possa vedere in [rfc2109] (http://tools.ietf.org/html/rfc2109) che dice che non dovrebbe funzionare con richieste diverse da GET/POST, ma sospetto che il browser e le implementazioni del server potrebbero non implementarlo in questi casi. – deinst

21

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

+0

sì sono passati nelle intestazioni, questo è (^ .. ^) –

+0

così in ogni richiesta che viene fatta, sono tutti i cookie inviati ipso facto ? – BKSpurgeon

20

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:nome=valore [; expires=data] [; domain=dominio] [; path=percorso] [; secure]


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

È inoltre possibile impostare il flag HttpOnly alla fine del cookie, per indicare che il cookie è httponly e non deve essere accessibile, in script tramite codice javascript. Questo aiuta a prevenire attacchi come il dirottamento delle sessioni.

Per ulteriori informazioni, vedere RFC 2109. Dai un'occhiata anche allo articolo di Nicholas C. Zakas, HTTP cookies explained.

12

creare script di esempio come resp:

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

poi fare eseguibile ed eseguire come questo.

./resp | nc -l -p 12346 

aperto il browser e navigare URL: http://localhost:1236 vedrete valore del cookie che viene inviato dal browser

 
    [[email protected] ]$ ./resp | nc -l -p 12346 
    GET/HTTP/1.1 
    Host: xxx.xxx.xxx.xxx:12346 
    Connection: keep-alive 
    Cache-Control: max-age=0 
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
    Upgrade-Insecure-Requests: 1 
    User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like 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 
+1

Cosa succede se ci sono più cookie? Sono separati da una virgola? –

+0

pensa che siano impostati come nuovi cookie. Cookie: nome = F Cookie: nome = A – Fix3r

Problemi correlati