来自 Go 的经过身份验证的 HTTP 客户端请求
在发出需要身份验证的 HTTP 客户端请求的上下文中,后续请求失败时会出现常见问题出现 401 拒绝访问错误。让我们探索解决此问题的 Golang 解决方案。
在提供的代码片段中,客户端使用 HTTP 基本身份验证成功与服务器进行身份验证,但在后续请求检索用户详细信息时面临挑战。为了解决这个问题,解决方案在于创建一个自定义的 cookie jar。
Golang 的 HTTP 客户端不会自动处理 cookie 管理。需要 cookie jar 来存储和管理跨 HTTP 请求的 cookie。下面的代码定义了自定义 cookie jar 实现:
type myjar struct { jar map[string] []*http.Cookie } func (p* myjar) SetCookies(u *url.URL, cookies []*http.Cookie) { p.jar [u.Host] = cookies } func (p *myjar) Cookies(u *url.URL) []*http.Cookie { return p.jar[u.Host] }
在 main 函数中,我们初始化自定义 cookie jar 并将其分配给客户端的 Jar 字段:
jar := &myjar{} jar.jar = make(map[string] []*http.Cookie) client.Jar = jar
通过合并通过这些更改,Golang 可以成功地跨经过身份验证的 HTTP 请求管理 cookie。现在,客户端将自动将与经过身份验证的会话关联的 cookie 附加到后续请求,确保正确处理详细信息请求,而不会出现 401 错误。
以上是如何在 Go 中管理经过身份验证的 HTTP 客户端请求的 Cookie?的详细内容。更多信息请关注PHP中文网其他相关文章!