В языке программирования Go куки (cookies) могут быть прописаны в заголовках HTTP запросов. Для этого вы можете использовать стандартный пакет net/http
.
Для начала, вам нужно создать объект http.Cookie
. Он содержит информацию о куки, включая его имя, значение и другие атрибуты.
cookie := &http.Cookie{ Name: "mycookie", Value: "hello", }
Затем вы можете присоединить этот объект Cookie
к вашему запросу. Обычно это делается с помощью метода http.Request.AddCookie()
.
req, err := http.NewRequest("GET", "http://example.com", nil) if err != nil { log.Fatal(err) } req.AddCookie(cookie)
Если у вас уже есть объект http.Request
, то вы можете использовать http.Request.Cookie()
для разбора куки из заголовка запроса.
req, err := http.NewRequest("GET", "http://example.com", nil) if err != nil { log.Fatal(err) } cookie, err := req.Cookie("mycookie") if err != nil { log.Fatal(err) } fmt.Println(cookie.Value)
Когда вы отправляете запрос с куки, они автоматически включаются в заголовок HTTP запроса по умолчанию. Они будут добавлены в строку заголовков в виде Cookie: name=value
:
resp, err := client.Do(req) if err != nil { log.Fatal(err) } for _, cookie := range resp.Cookies() { fmt.Println(cookie.Name, cookie.Value) }
Если вы хотите задать дополнительные атрибуты куки, такие как срок годности, путь, домен или безопасность, вы можете использовать дополнительные поля структуры http.Cookie
. Например:
cookie := &http.Cookie{ Name: "mycookie", Value: "hello", Expires: time.Now().Add(24 * time.Hour), HttpOnly: true, }
Это позволит куки существовать в течение 24 часов и не будет доступен для клиентского скрипта JavaScript.
Наконец, при разработке веб-приложений, обязательно принимайте во внимание безопасность и контроль кук. Не храните важные данные в куках и всегда проверяйте входные данные, чтобы предотвратить атаки на куки.