###前提・実現したいこと
golangを使用して、既定のURLにアクセスがあった場合に、あるAPIを叩いてcookie情報を取得し、
それを保持したまま、別のページにredirectさせたいです。
###発生している問題・エラーメッセージ
別のページへredirectさせることはできたものの、cookieが保持出来ておらず、
正常な動作とならない
###該当のソースコード
gojiパッケージを使用しており、goji.Get("/hoge/huga", h.redirect())で待ち構えて、
外部からhttp://~/hoge/huga/~へのアクセスがあった場合に、下記の処理に入る形になっています。
package redirector import ( "flag" "net/http" ) func (h Handler) redirect() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // APIを叩いてリダイレクト先URLと、認証用のcookieを取得 redirectURL, redirectCookie, err := h.service.GetRedirectURL(r) if err != nil { return } http.SetCookie(w, redirectCookie) // redirectURL(外部サイト)にリダイレクトするものの、cookie情報が保持できていない http.Redirect(w, r, redirectURL, http.StatusSeeOther) })
###試したこと
下記のようなhtmlを作成してローカルに配置し、
http.Redirect(w, r, redirectURL, http.StatusSeeOther)
のredirectURLをそのhtmlに向けてみましたが、cookieの値が取れなかったことや、
redirect先のページのログを確認し、cookieが渡ってきていないことは確認しています。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <meta charset="utf-8" /> <script type="text/javascript"> function onload() { var cookies = document.cookie; document.getElementById("msg").innerHTML = "Cookieの内容:" + cookies; } </script> </head> <body onload="onload();"> <div id="msg"></div> </body> </html>
また、調べている中で、net/httpのcookiejarを使用すれば保持が出来るという情報も
見つけはしたのですが、現状の上記ソースをどのように修正すれば適用できるかがわからず
といった状態です。
なお、gojiの使用が必須事項ということではないので、
方法があるようでしたら、他パッケージでも問題ありません。
###補足情報(言語/FW/ツール等のバージョンなど)
使用言語:golang
使用している外部パッケージ:goji
回答1件
あなたの回答
tips
プレビュー