2016-11-30 88 views
-1

我试图设置cookie的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。

+1

Cookie在响应中设置,并且您正在查看请求中存在的Cookie。 –

+0

收到答案后,请不要完全编辑您的问题。 –

回答

0

SetCookie()设置在ResponseWriter的头cookie的,因此你可以在后续请求读取它的价值在那里可以使用Request对象的Cookie()方法来读取。

这是同样的related code给你一个想法:

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 
} 

更新

,因为你传递你将不能访问你的页面的cookies HttpOnly as true。当它被设置为true时,只有服务器可以访问cookie,并且你不能使用Javascript在前端获取它们的值。

+0

'c.SetCookie( “测试1”, “测试值”,10, “/”, “”,真,真) \t c.HTML(200, “仪表板”,gin.H { \t \t “标题”: “Dashboard”, }'这应该有理想的设置在HTML页面上的cookie,但它不起作用 – aaj

+0

@ love2code你的意思是它应该在HTML页面中设置?Cookie是标题的一部分。 HttpOnly为True,您将无法使用Javascript访问cookie。 –

+0

@ love2code在此处了解更多关于HttpOnly cookie的信息:https://www.owasp.org/index.php/HttpOnly –

相关问题