在Go语言中处理HTTP请求中的Cookie

在Web开发中,Cookie是一种常用的技术,用于在客户端存储数据,并在随后的请求中发送回服务器。Go语言的标准库提供了强大的支持来处理HTTP请求中的Cookie。

首先,让我们了解如何在Go语言中设置Cookie。以下是一个简单的示例,演示如何在HTTP响应中设置一个名为sessionID的Cookie:

go 复制代码

|---|---------------------------------------------------------|
| | package main |
| | |
| | import ( |
| | "net/http" |
| | ) |
| | |
| | func handler(w http.ResponseWriter, r *http.Request) { |
| | // 设置一个名为"sessionID"的Cookie,有效期为一小时 |
| | cookie := &http.Cookie{ |
| | Name: "sessionID", |
| | Value: "123456", |
| | Expires: time.Now().Add(time.Hour), |
| | } |
| | http.SetCookie(w, cookie) |
| | |
| | // 发送响应 |
| | w.Write(\[\]byte("Cookie已设置")) |
| | } |
| | |
| | func main() { |
| | http.HandleFunc("/", handler) |
| | http.ListenAndServe(":8080", nil) |
| | } |

在上述示例中,我们使用http.Cookie结构体创建了一个名为sessionID的Cookie,并为其分配了一个值123456。我们还设置了Cookie的有效期为一小时。然后,使用http.SetCookie函数将该Cookie添加到HTTP响应中。

接下来,让我们了解如何在Go语言中读取HTTP请求中的Cookie。以下是一个简单的示例,演示如何从HTTP请求中获取名为sessionID的Cookie的值:

go 复制代码

|---|----------------------------------------------------------|
| | package main |
| | |
| | import ( |
| | "net/http" |
| | ) |
| | |
| | func handler(w http.ResponseWriter, r *http.Request) { |
| | // 获取名为"sessionID"的Cookie的值 |
| | cookie, err := r.Cookie("sessionID") |
| | if err != nil { |
| | http.Error(w, "Cookie not found", http.StatusBadRequest) |
| | return |
| | } |
| | |
| | // 使用获取的Cookie值进行后续处理,例如验证用户身份等 |
| | w.Write(\[\]byte("Session ID: " + cookie.Value)) |
| | } |
| | |
| | func main() { |
| | http.HandleFunc("/", handler) |
| | http.ListenAndServe(":8080", nil) |
| | } |

在上述示例中,我们使用r.Cookie("sessionID")从HTTP请求中获取名为sessionID的Cookie的值。如果该Cookie不存在,则返回一个错误。否则,我们可以使用获取的Cookie值进行后续处理,例如验证用户身份等。最后,我们将获取的Cookie值写入响应中。

相关推荐
gsls20080820 分钟前
告别 Vault 的复杂度:用 Go 标准库给 Windows 凭据管理器装上 MCP
windows·golang·mcp
xieliyu.35 分钟前
计算机网络:Fiddler 抓包工具使用教程 + HTTP 协议报文格式详解
java·笔记·计算机网络·测试工具·http·java-ee·fiddler
程序员夏洛1 小时前
HTTP 2.0 和 3.0 有什么区别?
网络·网络协议·http
名字还没想好☜1 小时前
Go 时间格式化为什么用 2006-01-02:time.Format/Parse 的参考时间、时区与解析踩坑
开发语言·后端·golang·go
FfHUCisI15 小时前
Golang Map 哈希表实现
golang·哈希算法·散列表
驭渊的小故事16 小时前
网络原理04(http协议详细解析3)(2000详细解析HTTPS的工作原理)
网络·网络协议·http
源代码•宸16 小时前
前置准备:定时微服务背景和现状
开发语言·经验分享·后端·微服务·云原生·架构·golang
IPdodo_17 小时前
2026年爬虫代理 IP 选择指南:从可用率、延迟到成本验收
网络协议·tcp/ip·scrapy·http·https·beautifulsoup·httpx
程序员夏洛18 小时前
HTTP 请求包含哪些内容,请求头和请求体有哪些类型?
网络·网络协议·http
李燚18 小时前
把规则搬回家:三个 BC 的贫血→充血重构实录(第103篇)
golang·agent·ddd·领域驱动设计·eino·deepflux·eino adk