Метод http.Request.AddCookie
Метод http.Request.AddCookie добавляет файл cookie к HTTP-запросу.
В качестве параметра метод принимает указатель на структуру http.Cookie.
Добавленные cookie будут отправлены на сервер вместе с запросом.
Метод автоматически устанавливает заголовок Cookie в запросе,
добавляя новое значение к уже существующим.
Синтаксис
req.AddCookie(cookie)
где req - это экземпляр http.Request,
а cookie - указатель на структуру http.Cookie
с именем и значением для добавления.
Пример
Давайте создадим новый HTTP-запрос и добавим к нему cookie с именем "username" и значением "john_doe":
package main
import (
"fmt"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://example.com", nil)
cookie := &http.Cookie{
Name: "username",
Value: "john_doe",
}
req.AddCookie(cookie)
fmt.Println(req.Header.Get("Cookie"))
}
Результат выполнения кода:
"username=john_doe"
Пример
Добавим несколько cookie к одному запросу, используя последовательные вызовы метода:
package main
import (
"fmt"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://example.com", nil)
req.AddCookie(&http.Cookie{
Name: "session_id",
Value: "abc123",
})
req.AddCookie(&http.Cookie{
Name: "user_id",
Value: "42",
})
req.AddCookie(&http.Cookie{
Name: "lang",
Value: "ru",
})
fmt.Println(req.Header.Get("Cookie"))
}
Результат выполнения кода:
"session_id=abc123; user_id=42; lang=ru"
Пример
Если cookie с таким именем уже существует, то новое значение будет добавлено отдельной записью. Давайте проверим это на практике:
package main
import (
"fmt"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://example.com", nil)
req.AddCookie(&http.Cookie{
Name: "theme",
Value: "dark",
})
req.AddCookie(&http.Cookie{
Name: "theme",
Value: "light",
})
fmt.Println(req.Header.Get("Cookie"))
}
Результат выполнения кода:
"theme=dark; theme=light"
Пример
Метод AddCookie часто используется вместе с
методом Cookies, который возвращает все cookie запроса.
Давайте добавим cookie и сразу их проверим:
package main
import (
"fmt"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://example.com", nil)
req.AddCookie(&http.Cookie{
Name: "preference",
Value: "dark_mode",
})
cookies := req.Cookies()
for _, c := range cookies {
fmt.Printf("Name: %s, Value: %s\n", c.Name, c.Value)
}
}
Результат выполнения кода:
"Name: preference, Value: dark_mode"
Смотрите также
-
метод
http.Request.Cookie,
который возвращает конкретный cookie по имени -
метод
http.Request.Cookies,
который возвращает все cookie запроса -
функцию
http.SetCookie,
которая добавляет cookie в HTTP-ответ -
функцию
http.NewRequest,
которая создает новый HTTP-запрос