我注意到一些奇怪的事情......在 Powershell 中,如果我尝试以下操作:
$uri = new-object System.Uri("http://builds.strongbadia.egg:8080/builds/package.tar.bz2")
$clnt = new-object System.Net.WebClient
$clnt.Credentials = new-object System.Net.NetworkCredential($username, $password)
$clnt.DownloadFile($uri, "package.tar.bz2")
未发送“授权”标头(通过 Wireshark 确认)。即使我使用凭证缓存并且特别声明应该使用基本身份验证:
$cred = new-object System.Net.NetworkCredential($username, $password)
$credcache = new-object System.Net.CredentialCache
$credcache.Add($uri, "Basic", $cred)
$clnt.Credentials = $credcache
它根本不发送标头。相反,我必须执行以下操作:
$auth = 'Basic ' + [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($username+":"+$password ))
$clnt.Headers.Add('Authorization', $auth)
只有这样,“授权”标头才会被发送,这基本上是因为我正在把东西塞进 PowerShell 的喉咙里。
知道这是一个已知的缺陷还是我做错了什么?我似乎无法找到它的参考。