Go 中的基本 HTTP 身份验证:解决错误代码
在尝试使用 Go 进行基本 HTTP 身份验证时,您可能会遇到错误消息“不支持”协议方案“”。让我们深入研究代码,探究为什么会出现这个问题。
有问题的代码如下:
func basicAuth() string { req, err := http.NewRequest("GET", "mydomain.example", nil)
错误源于省略“http://”或“https:” //” URL 中的前缀。要解决此问题,请将代码修改为:
func basicAuth() string { req, err := http.NewRequest("GET", "http://mydomain.example", nil)
确保您提供的 URL 包含正确的协议方案,“http”或“https”。
其他问题:重定向
注意涉及重定向的潜在陷阱。 Go-lang 在重定向期间丢弃指定的标头。为了解决这个问题,请实现一个自定义重定向策略函数来重新添加标头:
func redirectPolicyFunc(req *http.Request, via []*http.Request) error{ req.Header.Add("Authorization","Basic " + basicAuth("username1","password123")) return nil }
将自定义重定向策略合并到您的客户端中:
client := &http.Client{ CheckRedirect: redirectPolicyFunc, }
通过执行这些调整,您可以在 Go 中成功执行基本 HTTP 身份验证并处理潜在的重定向,而不会丢失授权标头。
以上是为什么 Go HTTP 身份验证失败并显示'不支持的协议方案 ''”?的详细内容。更多信息请关注PHP中文网其他相关文章!