РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1025 of 1593 menu

Метод http.Request.Cookie

Метод http.Request.Cookie возвращает cookie с указанным именем из HTTP-запроса. В первый параметр мы передаем имя cookie в виде строки. Метод возвращает указатель на http.Cookie и ошибку error. Если cookie не найдено, возвращается ошибка http.ErrNoCookie. Если cookie найдено, во втором возвращаемом значении будет nil.

Синтаксис

cookie, err := req.Cookie(name)

Пример

Давайте получим cookie с именем "username" из HTTP-запроса:

package main import ( "fmt" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { cookie, err := r.Cookie("username") if err != nil { if err == http.ErrNoCookie { fmt.Fprintln(w, "Cookie not found") } else { fmt.Fprintln(w, "Error:", err) } return } fmt.Fprintf(w, "Cookie value: %s", cookie.Value) } func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) }

Пример

Давайте проверим наличие cookie с именем "session_id" и обработаем случай, когда cookie отсутствует:

package main import ( "fmt" "net/http" ) func checkSession(w http.ResponseWriter, r *http.Request) { cookie, err := r.Cookie("session_id") if err == http.ErrNoCookie { http.Error(w, "Session not found", http.StatusUnauthorized) return } if err != nil { http.Error(w, "Server error", http.StatusInternalServerError) return } fmt.Fprintf(w, "Session ID: %s", cookie.Value) } func main() { http.HandleFunc("/session", checkSession) http.ListenAndServe(":8080", nil) }

Пример

Давайте получим несколько cookie из запроса, используя метод http.Request.Cookie для каждого имени:

package main import ( "fmt" "net/http" ) func getCookies(w http.ResponseWriter, r *http.Request) { names := []string{"username", "theme", "language"} for _, name := range names { cookie, err := r.Cookie(name) if err == http.ErrNoCookie { fmt.Fprintf(w, "%s: not found\n", name) continue } if err != nil { fmt.Fprintf(w, "%s: error - %v\n", name, err) continue } fmt.Fprintf(w, "%s: %s\n", name, cookie.Value) } } func main() { http.HandleFunc("/cookies", getCookies) http.ListenAndServe(":8080", nil) }

Смотрите также

  • метод http.Request.Cookies,
    который возвращает все cookie из запроса
  • метод http.Request.AddCookie,
    который добавляет cookie в запрос
  • функцию http.SetCookie,
    которая добавляет cookie в ответ
  • метод http.Request.FormValue,
    который возвращает значение параметра формы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить