3

HTML ページに Cookie を設定しようとしています

 func testCookie(c *gin.Context) {
    c.SetCookie("test1", "testvalue", 10, "/", "", true, true)
    c.HTML(200, "dashboard", gin.H{
        "title":    "Dashboard",
        }
    }

これにより、HTML ページに Cookie が設定されているはずですが、設定されていません。私のサーバーは、https 要求を処理するために実行されています。ここで Cookie を設定できない理由がわかりません。

4

2 に答える 2

2

上記のコメントに追加

c.SetCookie("cookieName", "name", 10, "/", "yourDomain", true, true)

c.SetCookie("gin_cookie", "someName", 60*60*24, "/", "google.com", true, true)
于 2019-04-08T11:23:03.230 に答える
1

SetCookie()のヘッダーにクッキーを設定するため、オブジェクトのメソッドResponseWriterを使用して読み取ることができる後続のリクエストでその値を読み取ることができます。RequestCookie()

アイデアを提供するために、同じ関連コードを次に示します。

func (c *Context) SetCookie(
    name string,
    value string,
    maxAge int,
    path string,
    domain string,
    secure bool,
    httpOnly bool,
) {
    if path == "" {
        path = "/"
    }
    http.SetCookie(c.Writer, &http.Cookie{
        Name:     name,
        Value:    url.QueryEscape(value),
        MaxAge:   maxAge,
        Path:     path,
        Domain:   domain,
        Secure:   secure,
        HttpOnly: httpOnly,
    })
}

func (c *Context) Cookie(name string) (string, error) {
    cookie, err := c.Request.Cookie(name)
    if err != nil {
        return "", err
    }
    val, _ := url.QueryUnescape(cookie.Value)
    return val, nil
}

アップデート

HttpOnlyとしてtrue渡しているため、ページの Cookie にアクセスできません。これが true に設定されている場合、サーバーのみが Cookie にアクセスでき、Javascript を使用してフロントエンドでそれらの値をフェッチすることはできません。

于 2016-11-30T12:13:54.513 に答える