github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/net/http/cookiejar/jar.go (about) 1 // Copyright 2012 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // Package cookiejar はメモリ内で RFC 6265 に準拠した http.CookieJar を実装します。 6 package cookiejar 7 8 import ( 9 "github.com/shogo82148/std/net/http" 10 "github.com/shogo82148/std/net/url" 11 "github.com/shogo82148/std/sync" 12 ) 13 14 // PublicSuffixListはドメインの公開サフィックスを提供します。例えば: 15 // - "example.com"の公開サフィックスは「com」です。 16 // - "foo1.foo2.foo3.co.uk"の公開サフィックスは「co.uk」です。 17 // - "bar.pvt.k12.ma.us"の公開サフィックスは「pvt.k12.ma.us」です。 18 // 19 // PublicSuffixListの実装は、複数のゴルーチンに対して安全に同時に使用できる必要があります。 20 // 21 // 常に""を返す実装は有効であり、テストには便利ですが、安全ではありません。これは、foo.comのHTTPサーバがbar.comのためにクッキーを設定できることを意味します。 22 // 23 // golang.org/x/net/publicsuffixパッケージには、公開サフィックスリストの実装があります。 24 type PublicSuffixList interface { 25 PublicSuffix(domain string) string 26 27 String() string 28 } 29 30 // Options は新しい Jar の作成オプションです。 31 type Options struct { 32 33 // PublicSuffixListは、ドメインに対してHTTPサーバがクッキーを設定できるかどうかを決定する公開サフィックスリストです。 34 // 35 // nilの値は有効であり、テストには便利ですが、セキュリティ上の理由から使用するべきではありません。これは、foo.co.ukのHTTPサーバがbar.co.ukに対してクッキーを設定できることを意味します。 36 PublicSuffixList PublicSuffixList 37 } 38 39 // Jarはnet/httpパッケージのhttp.CookieJarインターフェースを実装しています。 40 type Jar struct { 41 psList PublicSuffixList 42 43 // muは残りのフィールドをロックします。 44 mu sync.Mutex 45 46 // entriesは、eTLD+1でキー付けされ、その名前/ドメイン/パスでサブキー付けされたエントリのセットです。 47 entries map[string]map[string]entry 48 49 // nextSeqNumは新しいクッキーが作成されたSetCookiesに割り当てられる次のシーケンス番号です。 50 nextSeqNum uint64 51 } 52 53 // Newは新しいクッキージャーを返します。nilの [*Options] はゼロのOptionsと同等です。 54 func New(o *Options) (*Jar, error) 55 56 // Cookiesは [http.CookieJar] インターフェースのCookiesメソッドを実装しています。 57 // 58 // URLのスキームがHTTPまたはHTTPSでない場合、空のスライスを返します。 59 func (j *Jar) Cookies(u *url.URL) (cookies []*http.Cookie) 60 61 // SetCookiesは [http.CookieJar] インターフェースのSetCookiesメソッドを実装します。 62 // 63 // URLのスキームがHTTPまたはHTTPSでない場合、何もしません。 64 func (j *Jar) SetCookies(u *url.URL, cookies []*http.Cookie)