Go 中的 HTTP 基本身份验证:常见错误故障排除
尝试使用提供的代码实现基本 HTTP 身份验证时,出现错误: “不支持的协议方案''”。这可以追溯到创建请求对象时代码中的疏忽。
要解决此错误,请确保在请求 URL 中指定正确的方案。给出的示例尝试在不指定协议方案的情况下向“mydomain.example”发出请求,从而导致错误。
要纠正此问题,请修改代码以显式指定 HTTPS 方案,如下所示:
req, err := http.NewRequest("GET", "https://mydomain.example", nil)
此外,值得注意的是,Go 的 HTTP 客户端在处理重定向时可能会遇到另一个问题。默认情况下,客户端在重定向期间不会保留自定义标头,包括基本授权标头。
要避免此行为,您可以定义一个自定义重定向策略函数,在重定向期间显式添加授权标头。这可确保在整个重定向过程中保留身份验证凭据。
以下是自定义重定向策略函数的示例:
func redirectPolicyFunc(req *http.Request, via []*http.Request) error { req.Header.Add("Authorization", "Basic " + basicAuth(username, password)) return nil }
通过在 HTTP 客户端中使用此自定义策略,您可以确保在重定向期间正确处理基本授权标头,从而实现无缝身份验证。
以上是如何修复 Go 基本身份验证中的'不支持的协议方案”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!