我最近学习了 Go,并且正在试验 net/http
库。我一直在尝试使用 http.SetBasicAuth
函数对网站进行身份验证,但它似乎从来没有奏效。它适用于 cURL
但不适用于 Go。我知道这与 NTLM
有关,但我不知道如何解决这个问题
curl :
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)
主体不断返回站点 401 页面。
最佳答案
NTLM 身份验证和基本身份验证不同。 NTLM 是一个比 user:password string in header 更复杂的协议(protocol)。
如果您想从 Golang 代码发出请求以进行身份验证,您应该使用现有库之一,例如:go-ntlmssp
您还可以阅读有关 NTLM 协议(protocol)本身的更多信息 here
关于curl - NTLM 和 Golang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45387108/