Ответ 1
Как вы описали в своем вопросе, куки файлы управляются браузерами (HTTP-клиентами), и они позволяют хранить информацию на компьютерах клиентов, которые автоматически отправляются браузером при последующих запросах.
Если ваше приложение работает как клиент (вы подключаетесь к удаленным HTTP-серверам с помощью пакета net/http
), то нет браузера, который обрабатывал бы/управлял печенье. Под этим я подразумеваю хранение/запоминание файлов cookie, которые поступают как заголовки ответов Set-Cookie:
, и прикрепление их к последующим исходящим запросам, поступающим к одному и тому же хосту/домену. Также файлы cookie имеют дату истечения срока действия, которую вы также должны были бы проверить, прежде чем принимать решение об их включении в исходящие запросы.
http.Client
, однако, позволяет установить значение типа http.CookieJar
и если вы это сделаете, у вас будет автоматическое управление файлами cookie, которое иначе не существовало бы или вам придется делать это самостоятельно. Это позволяет вам выполнять несколько запросов с пакетом net/http
, который сервер увидит как часть того же сеанса, как если бы они были сделаны реальным браузером, так как часто HTTP-сеансы (идентификаторы сеансов) поддерживаются с помощью файлов cookie.
Пакет net/http/cookiejar
- это реализация CookieJar, которую вы можете использовать из коробки. Обратите внимание, что эта реализация только в памяти, что означает, что если вы перезапустите приложение, файлы cookie будут потеряны.
Таким образом, в основном HTTP файл cookie представляет собой небольшую часть данных, отправленных с веб-сайта и хранящихся в пользовательском веб-браузере, в то время как пользователь просмотр этого веб-сайта.
Cookiejar - это интерфейс Go для простого менеджера файлов cookie (для управления кукисами из HTTP-запросов и заголовков ответов) и реализация этого интерфейса.