?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
import "net/http/cookiejar"
概述
索引
示例
Cookiejar包實(shí)現(xiàn)了符合內(nèi)存RFC 6265的http.CookieJar。
type Jar
func New(o *Options) (*Jar, error)
func (j *Jar) Cookies(u *url.URL) (cookies []*http.Cookie)
func (j *Jar) SetCookies(u *url.URL, cookies []*http.Cookie)
type Options
type PublicSuffixList
jar.go punycode.go
Jar從net/http包實(shí)現(xiàn)http.CookieJar接口。
type Jar struct { // contains filtered or unexported fields}
func New(o *Options) (*Jar, error)
New返回一個(gè)新的cookie jar。無(wú)*選項(xiàng)相當(dāng)于零選項(xiàng)。
代碼:
// 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
func (j *Jar) Cookies(u *url.URL) (cookies []*http.Cookie)
Cookies實(shí)現(xiàn)http.CookieJar界面的Cookies方法。
如果URL的方案不是HTTP或HTTPS,它將返回空片。
func (j *Jar) SetCookies(u *url.URL, cookies []*http.Cookie)
SetCookies實(shí)現(xiàn)了http.CookieJar接口的SetCookies方法。
如果URL的方案不是HTTP或HTTPS,它什么也不做。
選項(xiàng)是創(chuàng)建新Jar的選項(xiàng)。
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提供域的公共后綴。例如:
- the public suffix of "example.com" is "com",- the public suffix of "foo1.foo2.foo3.co.uk" is "co.uk", and- the public suffix of "bar.pvt.k12.ma.us" is "pvt.k12.ma.us".
PublicSuffixList的實(shí)現(xiàn)必須安全,以供多個(gè)goroutine并發(fā)使用。
總是返回“”的實(shí)現(xiàn)是有效的,對(duì)于測(cè)試可能有用,但它不安全:這意味著foo.com的HTTP服務(wù)器可以為bar.com設(shè)置cookie。
公共后綴列表實(shí)現(xiàn)位于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}