Go語言中Gin的Cookie操作
Cookie是網(wǎng)絡(luò)服務(wù)器存儲在用戶計算機(jī)上的小型文本文件.它通常用于跟蹤用戶首選項(xiàng)或登錄憑據(jù).以及維護(hù)Http請求之間的狀態(tài).
1.Cookie具有各種屬性.
1.1.名稱和值;必須屬性.用于存儲任意數(shù)據(jù).
1.2.到期日期:用于指定Cookie應(yīng)在何時到期.
1.3.路徑和域:用于將Cookie限制在網(wǎng)站的特定部分或特定域內(nèi).
2.Cookie的創(chuàng)建:
服務(wù)器接收到客戶端發(fā)送的Http請求后,會在響應(yīng)中包含Set-Cookie標(biāo)頭的信息.Cookie通常存儲在客戶端瀏覽器中.客戶端瀏覽器在發(fā)送請求時會通過Http標(biāo)頭攜帶相應(yīng)的Cookie 返回服務(wù)器.
2.1Cookie分為以下幾種:
2.1.1:Set-Cookie和Cookie標(biāo)頭:
Set-Cookie是服務(wù)器在Http響應(yīng)中使用的標(biāo)頭.用于將Cookie發(fā)送到用戶代理處.在隨后的請求中使用Cookie標(biāo)頭將Cookie返回服務(wù)器.
2.1.2:會話Cookie:
會話Cookie特點(diǎn)是當(dāng)關(guān)閉瀏覽器時,它會被刪除.因?yàn)樗鼪]有指定Expires或Max-Age屬性.然后有一些瀏覽器具有"會話恢復(fù)功能",這會使得大多數(shù)Cookie保持原有功能.就像沒有關(guān)閉瀏覽器一樣.
2.1.3:持久Cookie:
持久性Cookie不會在關(guān)閉瀏覽器過期,而是達(dá)到特定日期后過期.
2.1.4:安全Cookie:
安全Cookie只能通過Https協(xié)議加密傳輸,確保他們不會通過不安全的連接發(fā)送.
2.2Cookie作用域:
Cookie的作用域由Domain和Path屬性定義,即指定了哪些Url可以接收和發(fā)送該Cookie.
2.2.1:Domain屬性:
指定了可以接收該Cookie的主機(jī).如果未指定Domain,則默認(rèn)情況下Cookie僅適用于當(dāng)前主機(jī)(不包含子域名).如果指定了.該Cookie適用于當(dāng)前主機(jī)所包含的子域名.
2.2.2:Path屬性:
指定了Cookie的使用路徑,即在哪些Url下Cookie可用.例如Path=/test,表示可以在/test /test/a /test/b 等路徑都可以使用.
3.設(shè)置Cookie:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
"time"
)
func main() {
request := gin.Default()
//設(shè)置一個Cookie
request.GET("/setCookie", func(c *gin.Context) {
cookie := &http.Cookie{
Name: "UserName",
Value: "itBo",
Expires: time.Now().Add(10 * time.Minute),
Path: "/",
}
http.SetCookie(c.Writer, cookie)
c.String(http.StatusOK, "ok,設(shè)置Cookie成功")
})
request.Run()
}
4.讀取Cookie:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
request := gin.Default()
//設(shè)置一個Cookie
request.GET("/readCookie", func(c *gin.Context) {
cookie, err := c.Cookie("userName")
if err != nil {
c.String(http.StatusOK, "未找到Cookie")
return
}
c.String(http.StatusOK, "ok,%s", cookie)
})
request.Run()
}
5.刪除Cookie:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
"time"
)
func main() {
request := gin.Default()
//設(shè)置一個Cookie
request.GET("/deleteCookie", func(c *gin.Context) {
cookie := &http.Cookie{
Name: "userName",
Value: "itBo",
Expires: time.Unix(0, 0),
Path: "/",
}
http.SetCookie(c.Writer, cookie)
c.String(http.StatusOK, "cookie is deleted")
})
request.Run()
}
到此這篇關(guān)于Go語言中Gin的Cookie操作的文章就介紹到這了,更多相關(guān)Gin的Cookie操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于golang如何實(shí)現(xiàn)error工具包詳解
Go 語言使用 error 類型來返回函數(shù)執(zhí)行過程中遇到的錯誤,下面這篇文章主要給大家介紹了關(guān)于如何基于golang實(shí)現(xiàn)error工具包的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-09-09
解決Go?Json?Unmarshal反序列化丟失數(shù)字精度問題
業(yè)務(wù)會使用?id生成器?產(chǎn)生的?分布式唯一ID,長度比較長,所以代碼反序列化時,會出現(xiàn)精度丟失問題,那如何解決呢,下面小編就來和大家詳細(xì)講講2023-08-08

