首页  >  文章  >  后端开发  >  为什么 Go HTTP 身份验证失败并显示'不支持的协议方案 ''”?

为什么 Go HTTP 身份验证失败并显示'不支持的协议方案 ''”?

Barbara Streisand
Barbara Streisand原创
2024-11-21 11:02:11191浏览

Why Does Go HTTP Authentication Fail with

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn