在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值写入响应中。