我最近学习了 Go,我正在尝试使用这个net/http库。我一直在尝试使用该http.SetBasicAuth功能对网站进行身份验证,但似乎从未奏效。它适用于cURL但不适用于 Go。我知道这与此有关,NTLM但我不知道如何解决问题
卷曲:
curl -v "http://server_that_im_trying_to_auth_with" --ntlm -u user:pass
走:
req, _ := http.NewRequest("GET", "url", nil)
req.SetBasicAuth(user, pass)
resp, _ := http.DefaultClient.Do(req)
body, _ := ioutil.ReadAll(resp.Body)
Run Code Online (Sandbox Code Playgroud)
身体不断返回网站 401 页。
NTLM 身份验证和基本身份验证不同。NTLM 是一个比头中的 user:password 字符串更复杂的协议。
如果您想从 Golang 代码发出请求以进行身份验证,您应该使用现有库之一,例如:go-ntlmssp
您也可以在此处阅读有关 NTLM 协议本身的更多信息