Метод 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,
который возвращает значение параметра формы