gpt4 book ai didi

c# - Web 浏览器控制 + 身份验证

转载 作者:行者123 更新时间:2023-11-30 14:56:45 26 4
gpt4 key购买 nike

我正在开发一个使用 WebBrowser 控件的 Windows Phone 8 应用程序。

当我将 WebBrowser 控件导航到 NTLM 验证的网站时,没有任何反应。唯一的事件是 Navigating,控件保持白色,Navigated 和 NavigationFailed 事件都没有被触发。

当我使用系统提供的 Web 浏览器应用程序导航到同一个网站时,它会显示一个弹出窗口,询问用户名、密码和域。

如何在我的应用程序中使用 WebBrowser 控件实现类似的行为?

最佳答案

我只找到了基本 HTTP 身份验证的解决方法。

为了检测这种情况,我在浏览网络浏览器之前发出了一个 HEAD HTTP 请求。

如果没有发生异常,我将浏览器导航到该 URI。

如果发生异常,我会捕获 WebException,获取 e.Response.Headers 集合,并检查 WWW-Authenticate 值。如果该值非空,我认为服务器要求进行身份验证。

如果 WWW-Authenticate 值以“basic”开头,我会使用我自己的弹出控件向用户询问凭据。然后我通过再发出一个 HEAD 请求来验证凭据,这次设置 webClient.Credentials = new NetworkCredential( user, pass );

如果他们没问题,我最后使用以下方法将凭据传递给 Web 浏览器控件:

public static Uri addCredsToUri( Uri u, string user, string pass )
{
UriBuilder uriSite = new UriBuilder( u );
uriSite.UserName = user;
uriSite.Password = pass;
return uriSite.Uri;
}

但是,如果 WWW-Authenticate 值以“negotiate”开头,即服务器使用 NTLM 身份验证,我不知道如何将凭据传递给 Web 浏览器。至少我检测到这种情况,并向我的最终用户显示一条适当的错误消息,告诉他/她不支持 NTLM 身份验证。

关于c# - Web 浏览器控制 + 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22032290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com