В чем разница между cookie и cookiejar?

Сегодня я столкнулся с термином "cookiejar" (пакет net/http/cookiejar). Я попытался собрать информацию об этом, но ничего не понял. Я знаю, что cookie - это пары ключ/значение, которые сервер отправляет клиенту, например: Set-Cookie: foo=10, браузер хранит его локально, а затем каждый последующий браузер запроса отправляет эти файлы cookie обратно на сервер, например: Cookie: foo=10.

Хорошо, но как насчет cookiejar? Что это такое и как оно выглядит?

Ответ 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-запросов и заголовков ответов) и реализация этого интерфейса.

Ответ 2

В общем, это база данных, где приложение (браузер или нет) помещает файлы cookie, которые он использует во время запросов и ответов. Так что это действительно банка для куки.