Go語言中Gin的Cookie操作
Cookie是網絡服務器存儲在用戶計算機上的小型文本文件.它通常用于跟蹤用戶首選項或登錄憑據.以及維護Http請求之間的狀態(tài).
1.Cookie具有各種屬性.
1.1.名稱和值;必須屬性.用于存儲任意數據.
1.2.到期日期:用于指定Cookie應在何時到期.
1.3.路徑和域:用于將Cookie限制在網站的特定部分或特定域內.
2.Cookie的創(chuàng)建:
服務器接收到客戶端發(fā)送的Http請求后,會在響應中包含Set-Cookie標頭的信息.Cookie通常存儲在客戶端瀏覽器中.客戶端瀏覽器在發(fā)送請求時會通過Http標頭攜帶相應的Cookie 返回服務器.
2.1Cookie分為以下幾種:
2.1.1:Set-Cookie和Cookie標頭:
Set-Cookie是服務器在Http響應中使用的標頭.用于將Cookie發(fā)送到用戶代理處.在隨后的請求中使用Cookie標頭將Cookie返回服務器.
2.1.2:會話Cookie:
會話Cookie特點是當關閉瀏覽器時,它會被刪除.因為它沒有指定Expires或Max-Age屬性.然后有一些瀏覽器具有"會話恢復功能",這會使得大多數Cookie保持原有功能.就像沒有關閉瀏覽器一樣.
2.1.3:持久Cookie:
持久性Cookie不會在關閉瀏覽器過期,而是達到特定日期后過期.
2.1.4:安全Cookie:
安全Cookie只能通過Https協議加密傳輸,確保他們不會通過不安全的連接發(fā)送.
2.2Cookie作用域:
Cookie的作用域由Domain和Path屬性定義,即指定了哪些Url可以接收和發(fā)送該Cookie.
2.2.1:Domain屬性:
指定了可以接收該Cookie的主機.如果未指定Domain,則默認情況下Cookie僅適用于當前主機(不包含子域名).如果指定了.該Cookie適用于當前主機所包含的子域名.
2.2.2:Path屬性:
指定了Cookie的使用路徑,即在哪些Url下Cookie可用.例如Path=/test,表示可以在/test /test/a /test/b 等路徑都可以使用.
3.設置Cookie:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
"time"
)
func main() {
request := gin.Default()
//設置一個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,設置Cookie成功")
})
request.Run()
}
4.讀取Cookie:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
request := gin.Default()
//設置一個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()
//設置一個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()
}
到此這篇關于Go語言中Gin的Cookie操作的文章就介紹到這了,更多相關Gin的Cookie操作內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決Go?Json?Unmarshal反序列化丟失數字精度問題
業(yè)務會使用?id生成器?產生的?分布式唯一ID,長度比較長,所以代碼反序列化時,會出現精度丟失問題,那如何解決呢,下面小編就來和大家詳細講講2023-08-08

