0

実際には何かが機能するはずの状況であるため、これにはあまり文脈がありませんが、機能しません。

マティーニフレームワークを使用しています。1つのハンドラーで私はこれを使用しています:

session.Set("deployed", "true")
r.Redirect("/myOtherURL", http.StatusSeeOther)

ここで、'session' は、ハンドラーに渡された sessions.Session オブジェクトです。myOtherURL をロードするハンドラーで、session.Get を使用していますが、何も返されません。すべてのセッション コンテンツを印刷しましたが、「デプロイ済み」は存在しません。

この問題の原因は何ですか? 何が欠けている可能性がありますか?できればもっと文脈を説明したいのですが、実際にはこれと同じくらい簡単です。

4

1 に答える 1

1

私のコメントを拡張する/将来他の人を助けるために:

  • 明示的なPath値を指定せずに Cookie を設定すると、Cookie は現在のパスを使用します。
  • Cookie はそのパスと下のパスに対してのみ送信されます - 上ではありません - 例

    1. /modules初めて暗黙的に設定したときに設定されるCookiesession.Set(val, key)
    2. のCookie送信され/modules/modules/all/modules/detail/12
    3. Cookie が送信されない/about、または/

これは、パスを明示的に設定することで修正できます。

var store = sessions.NewCookieStore([]byte("secret123"))

func main() {
    store.Options.Path = "/"
    ...
}

すべてのルートに対して Cookie を送信したくない場合があることに注意してください (これで問題あり/ません)。判断してください。

于 2015-09-10T02:51:23.927 に答える