http.Cookie
Давайте поговорим об http-куках. Если вы думаете, что это такие пары «ключ-значение», которые сервер и клиент гоняют туда-сюда в каждом запросе, то это верно лишь отчасти.
За годы развития веба куки обзавелись дополнительной атрибутикой. Вот как выглядит структура Cookie
в Go 1.23:
Name
иValue
— ключ и значение.Quoted
— true, если значение передано в кавычках.Path
— разрешает куку на страницах, которые начинаются с указанного пути.Domain
— разрешает куку на указанном домене и всех его поддоменах.Expires
— дата окончания годности куки.MaxAge
— срок жизни куки в секундах.Secure
— разрешает куку только по HTTPS.HttpOnly
— закрывает доступ к куке из JavaScript.SameSite
— разрешает или запрещает куку при кросс-доменных запросах.Partitioned
— ограничивает доступ к third-party кукам.
Неслабо, да?
Начиная с версии Go 1.23, серверную куку можно распарсить из строки с помощью http.ParseSetCookie
:
line := "session_id=abc123; SameSite=None; Secure; Partitioned; Path=/; Domain=example.com"
cookie, err := http.ParseSetCookie(line)
Браузерные куки тоже можно распарсить из строки, с помощью http.ParseCookie
:
line := "session_id=abc123; dnt=1; lang=en; lang=de"
cookies, err := http.ParseCookie(line)
★ Подписывайтесь на новые заметки.