|
我正在尝试使用以下代码进行基本 HTTP 身份验证,但抛出以下错误:
) \+ k5 ~- Y6 Z+ B0 X2013/05/21 10:22:58mydomain.com:不支持的协议方案“”退出状态 1
: D) m( `. c6 R Y o7 j+ ~3 e* tfunc 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}1 [/ I. C, O" E8 n, v& F
你知道我可能做错了什么吗?* I" u( o+ [" _1 i- ?; `& A
( O' h" t/ Y8 |- S" n% o. e 解决方案:
( l6 M" p9 V- R( {8 W& Q9 ~% X 潜在的问题是你的网站是否有任何重定向……Go-lang 在重定向时删除您指定的标头。(我必须使用它wireshark看到这一点!单击右键,然后检查元素,单击网络选项卡chrome中快速找到)
$ \1 `. e' J( A+ {. U1 `重新添加标头需要定义重定向函数。
, }* g) k* @1 o1 o* Z6 Mfunc 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)}
( M" c! n+ j( j! c: L1 Z# o |
|