新聞中心
基本介紹
接口文檔:https://pkg.GO.dev/github.com/gogf/gf/v2/net/ghttp#Cookie

從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。成都創(chuàng)新互聯(lián)公司將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。
常用方法:
type Cookie
func GetCookie(r *Request) *Cookie
func (c *Cookie) Contains(key string) bool
func (c *Cookie) Flush()
func (c *Cookie) Get(key string, def ...string) string
func (c *Cookie) GetSessionId() string
func (c *Cookie) Map() map[string]string
func (c *Cookie) Remove(key string)
func (c *Cookie) RemoveCookie(key, domain, path string)
func (c *Cookie) Set(key, value string)
func (c *Cookie) SetCookie(key, value, domain, path string, maxAge time.Duration, httpOnly ...bool)
func (c *Cookie) SetHttpCookie(httpCookie *http.Cookie)
func (c *Cookie) SetSessionId(id string)任何時候都可以通過?*ghttp.Request?對象獲取到當(dāng)前請求對應(yīng)的?Cookie?對象,因?yàn)?Cookie?和?Session?都是和請求會話相關(guān),因此都屬于?ghttp.Request?的成員對象,并對外公開。?Cookie?對象不需要手動?Close?,請求流程結(jié)束后,?HTTP Server?會自動關(guān)閉掉。
此外,?Cookie?中封裝了兩個?SessionId?相關(guān)的方法:
- ?
Cookie.GetSessionId()?用于獲取當(dāng)前請求提交的?SessionId?,每個請求的?SessionId?都是唯一的,并且伴隨整個請求流程,該值可能為空。 - ?
Cookie.SetSessionId(id string)?用于自定義設(shè)置?SessionId?到?Cookie?中,返回給客戶端(往往是瀏覽器)存儲,隨后客戶端每一次請求在?Cookie?中可帶上該?SessionId?。
在設(shè)置?Cookie?變量的時候可以給定過期時間,該時間為可選參數(shù),默認(rèn)的?Cookie?過期時間為一年。
默認(rèn)的?SessionId?在?Cookie?中的存儲名稱為?gfsession?。
使用示例
package main
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gtime"
"github.com/gogf/gf/v2/net/ghttp"
)
func main() {
s := g.Server()
s.BindHandler("/cookie", func(r *ghttp.Request) {
datetime := r.Cookie.Get("datetime")
r.Cookie.Set("datetime", gtime.Datetime())
r.Response.Write("datetime:", datetime)
})
s.SetPort(8199)
s.Run()
}執(zhí)行外層的?main.go?,可以嘗試刷新頁面 http://127.0.0.1:8199/cookie ,顯示的時間在一直變化。
對于控制器對象而言,從基類控制器中繼承了很多會話相關(guān)的對象指針,可以看做?alias?,可以直接使用,他們都是指向的同一個對象:
type Controller struct {
Request *ghttp.Request // 請求數(shù)據(jù)對象
Response *ghttp.Response // 返回?cái)?shù)據(jù)對象(r.Response)
Server *ghttp.Server // WebServer對象(r.Server)
Cookie *ghttp.Cookie // COOKIE操作對象(r.Cookie)
Session *ghttp.Session // SESSION操作對象
View *View // 視圖對象
}由于對于?Web?開發(fā)者來講,?Cookie?都已經(jīng)是非常熟悉的組件了,相關(guān)?API?也非常簡單,這里便不再贅述。
Cookie會話過期
?Cookie?的有效期默認(rèn)是1年,如果我們期望?Cookie?隨著用戶的瀏覽會話過期,像這樣:
那么我們僅需要通過?SetCookie?來設(shè)置?Cookie?鍵值對并將?maxAge?參數(shù)設(shè)置為?0?即可。像這樣:
r.Cookie.SetCookie("MyCookieKey", "MyCookieValue", "", "/", 0) 分享文章:創(chuàng)新互聯(lián)GoFrame教程:GoFrameWEB服務(wù)開發(fā)-Cookie
鏈接分享:http://m.fisionsoft.com.cn/article/cooshjj.html


咨詢
建站咨詢
