Пакет cookiejar
Обзор
Пакет cookiejar реализует http.CookieJar, совместимый с RFC 6265, в памяти.
Индекс
Примеры
Файлы пакета
jar.go punycode.go
Тип Jar 1.1
Jar реализует интерфейс http.CookieJar из пакета net/http.
type Jar struct {
// contains filtered or unexported fields
}
Функция New 1.1
func New(o *Options) (*Jar, error)
New возвращает новый объект cookie jar. nil *Options эквивалентен нулевому значению Options.
Пример
Код:
// Start a server to give us cookies.
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if cookie, err := r.Cookie("Flavor"); err != nil {
http.SetCookie(w, &http.Cookie{Name: "Flavor", Value: "Chocolate Chip"})
} else {
cookie.Value = "Oatmeal Raisin"
http.SetCookie(w, cookie)
}
}))
defer ts.Close()
u, err := url.Parse(ts.URL)
if err != nil {
log.Fatal(err)
}
// All users of cookiejar should import "golang.org/x/net/publicsuffix"
jar, err := cookiejar.New(&cookiejar.Options{PublicSuffixList: publicsuffix.List})
if err != nil {
log.Fatal(err)
}
client := &http.Client{
Jar: jar,
}
if _, err = client.Get(u.String()); err != nil {
log.Fatal(err)
}
fmt.Println("After 1st request:")
for _, cookie := range jar.Cookies(u) {
fmt.Printf(" %s: %s\n", cookie.Name, cookie.Value)
}
if _, err = client.Get(u.String()); err != nil {
log.Fatal(err)
}
fmt.Println("After 2nd request:")
for _, cookie := range jar.Cookies(u) {
fmt.Printf(" %s: %s\n", cookie.Name, cookie.Value)
}
Вывод:
After 1st request: Flavor: Chocolate Chip After 2nd request: Flavor: Oatmeal Raisin
Функция (*Jar) Cookies 1.1
func (j *Jar) Cookies(u *url.URL) (cookies []*http.Cookie)
Cookies реализует метод Cookies интерфейса http.CookieJar.
Возвращает пустой срез, если схема URL не HTTP или HTTPS.
Функция (*Jar) SetCookies 1.1
func (j *Jar) SetCookies(u *url.URL, cookies []*http.Cookie)
SetCookies реализует метод SetCookies интерфейса http.CookieJar.
Ничего не делает, если схема URL не HTTP или HTTPS.
Тип Options 1.1
Options — параметры для создания нового Jar.
type Options struct {
// PublicSuffixList is the public suffix list that determines whether
// an HTTP server can set a cookie for a domain.
//
// A nil value is valid and may be useful for testing but it is not
// secure: it means that the HTTP server for foo.co.uk can set a cookie
// for bar.co.uk.
PublicSuffixList PublicSuffixList
}
Тип PublicSuffixList 1.1
PublicSuffixList предоставляет общее суффиксное имя домена. Например:
- общее суффиксное имя "example.com" — "com",
- общее суффиксное имя "foo1.foo2.foo3.co.uk" — "co.uk", и
- общее суффиксное имя "bar.pvt.k12.ma.us" — "pvt.k12.ma.us".
Реализации PublicSuffixList должны быть безопасны для одновременного использования несколькими горутинами.
Реализация, которая всегда возвращает "", допустима и может быть полезна для тестирования, но не является безопасной: это означает, что HTTP-сервер для foo.com может устанавливать cookie для bar.com.
Реализация списка общих суффиксов находится в пакете golang.org/x/net/publicsuffix.
type PublicSuffixList interface {
// PublicSuffix returns the public suffix of domain.
//
// TODO: specify which of the caller and callee is responsible for IP
// addresses, for leading and trailing dots, for case sensitivity, and
// for IDN/Punycode.
PublicSuffix(domain string) string
// String returns a description of the source of this public suffix
// list. The description will typically contain something like a time
// stamp or version number.
String() string
}
© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/net/http/cookiejar/