Как передаются cookies в протоколе HTTP?

как cookies передаются в протоколе HTTP?

4 ответов


сервер отправляет следующее В заголовке ответа для установки поля cookie.

Set-Cookie:имя=стоимостью

если есть набор cookie, то браузер отправляет следующее В заголовке запроса.

Cookie:имя=стоимостью

посмотреть http Cookie статья в Википедии для получения дополнительной информации.


Cookies передаются как заголовки HTTP, как в запросе (клиент - > сервер), так и в ответе (сервер -> клиент).


помимо того, что написано в других ответах, другие детали, связанные с путем cookie, максимальный возраст cookie, независимо от того, защищен он или нет, также передается в заголовке ответа Set-Cookie. Например:

Set-Cookie:имя=стоимостью[; expires=дата][; domain=домен][; path=путь][; secure]


однако не все эти сведения передаются обратно на сервер клиентом при выполнении следующего HTTP-запроса.

вы также можете установить HttpOnly флаг в конце вашего файла cookie, чтобы указать, что ваш файл cookie httponly и не должен быть разрешен для доступа в сценариях с помощью кода javascript. Это помогает предотвратить такие атаки, как захват сеанса.

для получения дополнительной информации см. раздел RFC 2109. Также взгляните на Статья Николая С. Zakas, в HTTP и cookie-файлы пояснил.


создать пример скрипта как 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"

затем сделайте исполняемый файл и выполните вот так.

./resp | nc -l -p 12346

откройте браузер и просмотрите URL:http://localhost:1236 вы увидите значение Cookie, которое отправляется браузером

    [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