回答

收藏

Go 中的基本 HTTP 身份验证

技术问答 技术问答 238 人阅读 | 0 人回复 | 2023-09-12

我正在尝试使用以下代码进行基本 HTTP 身份验证,但抛出以下错误:1 P% A% ~: q7 C/ O9 ^
2013/05/21 10:22:58mydomain.com:不支持的协议方案“”退出状态 15 c4 w) M- @5 N. @  j1 z+ r0 j' s
    func basicAuth() string    var username string = "foo"    var passwd string = "bar"    client := &http.Client{}    req,err := http.NewRequest("GET","mydomain.com",nil)    req.SetBasicAuth(username,passwd)    resp,err := client.Do(req)    if err != nil{          log.Fatal(err)   }    bodyText,err := ioutil.ReadAll(resp.Body)    s := string(bodyText)    return s}
    # U  p! K; [6 C$ n9 @& j
你知道我可能做错了什么吗?
3 _* c8 _1 H0 J8 V- m, a                                                                - ^" K* l( M$ Q  [9 D3 t
    解决方案:                                                                * S" K1 z& N9 H# j& \
                                                                潜在的问题是你的网站是否有任何重定向……Go-lang 在重定向时删除您指定的标头。(我必须使用它wireshark看到这一点!单击右键,然后检查元素,单击网络选项卡chrome中快速找到)) p  g9 U: {! b  P2 G7 }
重新添加标头需要定义重定向函数。/ |1 |' f7 y# P& X* r" X
    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)}9 c' e4 ?0 S, X4 Y: F+ z
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则