我想打开一个需要基本身份验证的页面。 我想将基本身份验证标头与URL一起传递给浏览器。
我该如何做到这一点?
我想打开一个需要基本身份验证的页面。 我想将基本身份验证标头与URL一起传递给浏览器。
我该如何做到这一点?
通过头文件,您可以:
string user = "uuuuuuu";
string pass = "ppppppp";
string authHdr = "Authorization: Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(user + ":" + pass)) + "\r\n";
webBrowserCtl.Navigate("http://example.com", null, null, authHdr);
考虑到这需要在每个请求的基础上完成,一个更简单的基本身份验证选项是只需;
webBrowserCtl.Navigate("http://uuuuuuu:ppppppp@example.com", null, null, authHdr);
$_SERVER['PHP_AUTH_USER']
。 - Alex K.您可以尝试旧的“URL中”格式,这种方式允许此操作,但不安全:
http(s)://username:password@server/resource.ext
这会暴露凭据,IE已经禁用了它,但在其他浏览器中仍然可以使用。当使用此格式时,凭据对浏览器可用,并根据Web服务器的响应决定是否发送基本身份验证标头。
.Net中的WebBrowser控件使用Internet Explorer作为其浏览器,因此如果您不介意使用IE,这是我编写的代码。 h5url是您想在窗口中打开的网址。我的程序甚至不显示浏览器控件,它会生成一个已登录网页的Internet Explorer实例。
using (WebBrowser WebBrowser1 = new WebBrowser())
{
String auth =
System.Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(_User + ":" + _Password));
string headers = "Authorization: Basic " + auth + "\r\n";
WebBrowser1.Navigate(h5URL, "_blank", null, headers);
}
这将打开一个新的浏览器,其中包含您需要进行身份验证的任何标头,基本的或其他方式。
首先检查这段代码:
Dim result As String
Using wClnt As New Net.WebClient
wClnt.Credentials = New System.Net.NetworkCredential("username", "password")
Using strR As New IO.StreamReader(wClnt.OpenRead("http://ADDRESS_To_READ"))
result = strR.ReadToEnd
End Using
End Using