🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## Cookies Cookie 是用户访问网站时浏览器上存储的小型文本文件,由服务器发送而来。每当用户加载网站时,浏览器都会将 cookie 发送回服务器以通知用户之前的活动。 Cookie 作为一个可靠验证凭据,可用来记录状态信息(比如在线商城购物车中的商品)或记录用户的浏览器活动(包括单击特定按钮,登录或记录访问过的页面)。Cookie 还可以存储用户先前输入的密码和表单内容,例如信用卡号或地址。 ### Cookie 属性 | 属性 | 可选 | | :------- | :--- | | Name | No | | Value | No | | Path | Yes | | Domain | Yes | | Expires | Yes | | Secure | Yes | | HTTPOnly | Yes | Echo 使用 golang 自带的 `http.Cookie` 对象写入/读取从上下文中的 cookie。 ### 创建一个 Cookie ```go func writeCookie(c echo.Context) error { cookie := new(http.Cookie) cookie.Name = "username" cookie.Value = "jon" cookie.Expires = time.Now().Add(24 * time.Hour) c.SetCookie(cookie) return c.String(http.StatusOK, "write a cookie") } ``` - 使用 `new(http.Cookie)` 创建Cookie。 - cookie 的属性值会被赋值给 `http.Cookie` 的可导出属性。 - 最后,使用 `c.SetCookie(cookies)` 来给 HTTP 响应增加 `Set-Cookie` 头。 ### 读取 Cookie ```go func readCookie(c echo.Context) error { cookie, err := c.Cookie("username") if err != nil { return err } fmt.Println(cookie.Name) fmt.Println(cookie.Value) return c.String(http.StatusOK, "read a cookie") } ``` - Cookie 通过名称从 HTTP 请求里读取:`c.Cookie("name")`。 - Cookie 的属性可以使用 `Getter` 方法获取。 ### 读取所有 Cookies ```go func readAllCookies(c echo.Context) error { for _, cookie := range c.Cookies() { fmt.Println(cookie.Name) fmt.Println(cookie.Value) } return c.String(http.StatusOK, "read all cookie") } ```