¿Cómo se pasan las cookies en el protocolo HTTP?


¿Cómo se pasan las cookies en el protocolo HTTP?

 193
Author: jai, 2010-08-12

4 answers

El servidor envía lo siguiente en su encabezado de respuesta para establecer un campo de cookie.

Set-Cookie:nombre=valor

Si hay una cookie establecida, entonces el navegador envía lo siguiente en su encabezado de solicitud.

Cookie:nombre=valor

Consulte el artículo HTTP Cookie en Wikipedia para obtener más información.

 246
Author: deinst,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-01 18:26:29

Las cookies se pasan como encabezados HTTP, tanto en la solicitud (cliente -> servidor) como en la respuesta (servidor -> cliente).

 25
Author: Douglas Leeder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-12 11:31:13

Aparte de lo que está escrito en otras respuestas, otros detalles relacionados con la ruta de la cookie, la edad máxima de la cookie, si está asegurada o no también se pasa en el encabezado de respuesta Set-Cookie. Por ejemplo:

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


Sin embargo, el cliente no devuelve todos estos detalles al servidor al realizar la siguiente solicitud HTTP.

También puede establecer HttpOnly marca al final de tu cookie, para indicar que tu cookie es httponly y no se debe permitir el acceso, en scripts por código javascript. Esto ayuda a prevenir ataques como el secuestro de sesiones.

Para más información, véase RFC 2109. También echa un vistazo a Artículo de Nicholas C. Zakas, Explicación de las cookies HTTP.

 22
Author: Mangu Singh Rajpurohit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-19 11:38:13

Crear script de ejemplo como 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"

Luego hacer ejecutable y ejecutar así.

./resp | nc -l -p 12346

Abra el navegador y busque la URL: http://localhost:1236 verá el valor de la cookie que es enviado por el navegador

    [aaa@bbbbbbbb ]$ ./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
 12
Author: FariZ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-15 16:13:34