Метод http.Request.Cookies
Метод http.Request.Cookies возвращает срез всех cookie-файлов,
которые были переданы в HTTP-запросе. Каждый cookie представлен
указателем на структуру http.Cookie. Если в запросе нет
ни одного cookie, метод возвращает пустой срез (не nil).
В отличие от метода http.Request.Cookie, этот метод не
возвращает ошибку, а просто предоставляет все доступные cookie.
Синтаксис
func (r *Request) Cookies() []*Cookie
Пример
Давайте создадим простой HTTP-сервер, который обрабатывает запрос и выводит все переданные cookie:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
cookies := r.Cookies()
fmt.Printf("Total cookies: %d\n", len(cookies))
for i, c := range cookies {
fmt.Printf("Cookie %d: %s = %s\n", i+1, c.Name, c.Value)
}
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
Результат выполнения кода при запросе с двумя cookie:
"Total cookies: 2"
"Cookie 1: session_id = abc123"
"Cookie 2: user_pref = dark_mode"
Пример
Давайте обработаем запрос без cookie и проверим, что метод возвращает пустой срез:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
cookies := r.Cookies()
if len(cookies) == 0 {
fmt.Println("No cookies found in request")
} else {
fmt.Printf("Found %d cookies\n", len(cookies))
}
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
Результат выполнения кода для запроса без cookie:
"No cookies found in request"
Пример
Давайте получим все cookie и найдем среди них конкретный по имени:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
cookies := r.Cookies()
var token string
for _, c := range cookies {
if c.Name == "auth_token" {
token = c.Value
break
}
}
if token != "" {
fmt.Printf("Auth token found: %s\n", token)
} else {
fmt.Println("Auth token not found")
}
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
Результат выполнения кода при наличии cookie auth_token:
"Auth token found: xyz789token"
Смотрите также
-
метод
http.Request.Cookie,
который возвращает конкретный cookie по имени -
метод
http.Request.AddCookie,
который добавляет cookie к запросу -
структуру
http.Cookie,
представляющую отдельный cookie-файл -
функцию
http.SetCookie,
которая устанавливает cookie в ответе