🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

1回答

2471閲覧

Goで複数のCookieをSetしてリダイレクトしたい

dtkmt

総合スコア20

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2019/11/12 11:42

編集2019/11/13 00:37

前提・実現したいこと

golangを使って、Cookieを利用してリダイレクトするページを net/http で取得したいと考えています。

対象のサイト(example.com)は、 トップページへのアクセス時に、
Cookieを以下のような2つのCookieをクライアントに渡し、 example.com/input へリダイレクトさせます。

set-cookie: EXAMPLE-COOKIE=xxxxxxxxxxx; path=/; secure; HttpOnly set-cookie: example-cookie[id]=yyyyyyy; path=/; secure; httponly

上記2つのCookieを受け取り example.com/input へリダイレクトすると、正しいコンテンツが表示されますが、
Cookieを正常にSet出来ない場合は正しくコンテンツが表示されない仕様です。

発生している問題・エラーメッセージ

net/http/cookiejar を利用してCookieをリクエストにSetしたいのですが、
Setされず、正しくないコンテンツが表示されます。

該当のソースコード

go

1package main 2 3import ( 4 "golang.org/x/net/publicsuffix" 5 "io/ioutil" 6 "log" 7 "net/http" 8 "net/http/cookiejar" 9) 10 11func main() { 12 options := cookiejar.Options{ 13 PublicSuffixList: publicsuffix.List, 14 } 15 jar, err := cookiejar.New(&options) 16 if err != nil { 17 log.Fatal(err) 18 } 19 client := http.Client{Jar: jar} 20 resp, err := client.Get("https://example.com/") 21 if err != nil { 22 log.Fatal(err) 23 } 24 data, err := ioutil.ReadAll(resp.Body) 25 resp.Body.Close() 26 if err != nil { 27 log.Fatal(err) 28 } 29 log.Println(string(data)) 30}

試したこと

補足情報(FW/ツールのバージョンなど)

  • Goのバージョン: go version go1.12.5 darwin/amd64

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

問題かどうかは表示環境にもよるのですが、
set-cookieにて例示のCookieは
名前に使っている「[]」が使える文字種の範囲から外れている可能性があります。
その場合URLエンコードが必要かもしれません。

投稿2019/11/15 02:44

nobonobo

総合スコア3367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dtkmt

2019/11/18 08:26

アドバイスありがとうございます! なるほど、たしかに2つのCookieのうち、セットされていると思われるものは、 「[]」が含まれていないほうです。 URLエンコードする手法について知見が無いため、 調べつつ試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問