Go 中的基本 HTTP 身份验证:解决重定向问题
使用提供的代码在 Go 中尝试基本 HTTP 身份验证时,开发人员可能会遇到以下错误:“不支持的协议方案“”。”此错误可能是由于重定向的处理造成的。
陷阱和解决方案
网站执行重定向时会出现微妙之处。在 Go 中,在重定向期间,原始请求中指定的自定义标头会丢失。为了解决这个问题,必须定义一个自定义重定向函数来恢复标头。
使用自定义重定向函数更新了代码
以下代码片段说明了更新后的脚本,其中包括重定向函数:
func basicAuth(username, password string) string { auth := username + ":" + password return base64.StdEncoding.EncodeToString([]byte(auth)) } func redirectPolicyFunc(req *http.Request, via []*http.Request) error{ req.Header.Add("Authorization","Basic " + basicAuth("username1","password123")) return nil } func main() { client := &http.Client{ Jar: cookieJar, CheckRedirect: redirectPolicyFunc, } req, err := http.NewRequest("GET", "http://localhost/", nil) req.Header.Add("Authorization","Basic " + basicAuth("username1","password123")) resp, err := client.Do(req) }
通过此修改,自定义重定向函数可确保将身份验证标头添加到后续重定向请求中,从而解决错误并启用 HTTP 身份验证。
以上是如何解决 Go 中基本 HTTP 身份验证期间的'不支持的协议方案”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!