【问题标题】:Setting authentication header for WebBrowser control - ASP.NET为 WebBrowser 控件设置身份验证标头 - ASP.NET
【发布时间】:2011-09-11 17:18:28
【问题描述】:

我在我的 asp.net 应用程序中使用 WebBrowser 控件来生成网页的屏幕截图。在更改应用程序池帐户之前,我能够生成图像。我已经为新的应用程序池提供了所有必要的权限,并且能够从 IE 浏览我的页面。但是当我通过网络浏览器控件以编程方式导航到它时,我得到了 401.2。我在 IIS 7.0 中设置了“失败的请求跟踪规则”,并使用 Fiddler 嗅探请求,发现身份验证标头不正确。

但是 webbrowser.navigate 有一个重载方法,我们可以在其中传递自定义 http 标头。我该如何设置?我只想使用集成身份验证,不想在代码中提供用户名/密码,因为我可能不知道。但是我仍然没有运气尝试以下代码。

System.Uri uri = new Uri(myUrl);
byte[] authData = System.Text.UnicodeEncoding.UTF8.GetBytes("user: passwd");
string authHeader = "Authorization: Basic " + Convert.ToBase64String(authData) + "\r\n";
myBrowser.Navigate(uri, "", null, authHeader);

任何想法如何设置标题与用户代理等其他细节?

【问题讨论】:

    标签: c# asp.net webbrowser-control http-status-code-401


    【解决方案1】:

    如果你想在标题中包含用户代理,你应该这样做:

    string authHeader = "Authorization: Basic " + Convert.ToBase64String(authData) + 
            "\r\n" + "User-Agent: MyUserAgent\r\n";
    

    请记住,每个标题必须以回车换行对终止。

    【讨论】:

    • 这只是一种预感。我可以因为没有指定用户代理而生成 401 吗? http 标头中必须包含哪些内容?
    • @NLV:我不确定您的情况需要什么。你说 IE 的导航有效吗?检查从 IE 发出的请求中的标头。
    • 我在 Windows 窗体应用程序中尝试了相同的代码。即使我明确地将身份验证标头设置为空并请求页面,我也可以在控件中加载页面。并且 Web 应用程序未配置为匿名访问。你能解释一下吗?我开始认为,无论我为请求设置什么有效的身份验证标头,它都没有响应。
    猜你喜欢
    • 2017-08-12
    • 1970-01-01
    • 2021-07-16
    • 2011-11-18
    • 2018-10-17
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多