Функция http.SetCookie

Функция http.SetCookie добавляет заголовок Set-Cookie к HTTP-ответу, чтобы установить cookie в браузере клиента. Первый параметр принимает http.ResponseWriter - объект для формирования ответа. Второй параметр принимает указатель на структуру http.Cookie, содержащую имя и значение cookie, а также дополнительные атрибуты.

Синтаксис

gohttp.SetCookie(w http.ResponseWriter, cookie *http.Cookie)

Пример

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

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  http.HandleFunc("/set", func(w http.ResponseWriter, r *http.Request) {
    cookie := &http.Cookie{
      Name:  "username",
      Value: "gopher",
    }
    http.SetCookie(w, cookie)
    fmt.Fprintln(w, "Cookie установлен")
  })
  
  http.ListenAndServe(":8080", nil)
}

После вызова http.SetCookie в заголовках ответа появится строка:

goSet-Cookie: username=gopher

Пример

Давайте установим cookie с дополнительными атрибутами MaxAge и HttpOnly:

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  http.HandleFunc("/set", func(w http.ResponseWriter, r *http.Request) {
    cookie := &http.Cookie{
      Name:   "session",
      Value:  "abc123",
      Path:   "/",
      MaxAge:   3600,
      HttpOnly: true,
      Secure:   true,
    }
    http.SetCookie(w, cookie)
    fmt.Fprintln(w, "Сессия создана")
  })
  
  http.ListenAndServe(":8080", nil)
}

Результат выполнения кода:

go"Set-Cookie: session=abc123; Path=/; Max-Age=3600; HttpOnly; Secure"

Пример

Давайте установим несколько cookie в одном ответе:

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  http.HandleFunc("/set", func(w http.ResponseWriter, r *http.Request) {
    cookie1 := &http.Cookie{
      Name:  "lang",
      Value: "ru",
    }
    cookie2 := &http.Cookie{
      Name:  "theme",
      Value: "dark",
    }
    http.SetCookie(w, cookie1)
    http.SetCookie(w, cookie2)
    fmt.Fprintln(w, "Несколько cookie установлены")
  })
  
  http.ListenAndServe(":8080", nil)
}

Результат выполнения кода:

go"Set-Cookie: lang=ru"
"Set-Cookie: theme=dark"

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

  • функцию Request.Cookie,
    которая возвращает cookie по имени из запроса
  • функцию Request.Cookies,
    которая возвращает все cookie из запроса
  • метод Request.AddCookie,
    который добавляет cookie к запросу
  • структуру http.Cookie,
    которая представляет cookie в HTTP