CefSharp 使用浏览器登录加载页面

Posted

技术标签:

【中文标题】CefSharp 使用浏览器登录加载页面【英文标题】:CefSharp load a page with browser login 【发布时间】:2015-06-19 05:01:10 【问题描述】:

我需要在 Wpf 应用程序中嵌入网络浏览器,我尝试使用工具箱中的浏览器,但遇到一些问题并转到 CefSharp。

public MainWindow()

 InitializeComponent();
 BrowserSettings settings = new BrowserSettings();
 Cef.Initialize(new CefSettings());           
CefSharp.Wpf.ChromiumWebBrowser webBrowser = new CefSharp.Wpf.ChromiumWebBrowser();
  licence_grid.Children.Add(webBrowser);
  webBrowser.Address = "http://myurlToLoad the page";

问题是当我使用正常的 url 页面加载时。 但是当我使用我打算使用的 url 时,用户在弹出的浏览器中输入他的用户名和密码(我的意思不是从网站弹出)。我收到此页面的错误,需要很长时间才能加载,仅此而已。 谁能给我一些跟踪... 谢谢

【问题讨论】:

您看到了什么错误?还有一些示例项目可以帮助您入门,请参阅 github.com/cefsharp/CefSharp.MinimalExample 尝试使用示例加载您的网页,看看您是否收到类似的错误。如果您将CefSharp 的版本作为一般做法,这也很有帮助。 【参考方案1】:

听起来您所指的弹出窗口实际上是提示basic 身份验证的站点。

在这种情况下,您需要提供一个IRequestHandler.GetAuthCredentials 处理程序。

【讨论】:

是的,我没有找到正确的词......所以你的意思是我需要实现一个处理程序并自己完成提示窗口,获取用户和密码并将 vthese 值放入字符串在处理程序中通过 ref 传递... 是的,基本上为用户提供您自己的对话框来捕获用户名和密码,然后设置两个 ref 参数并返回 true; github.com/cefsharp/CefSharp/blob/master/CefSharp/… 好的,非常感谢,我来自 MS ActiveX,所以我需要发现,我发现文档不太好.. 你实现了 GetAuthCredentials 并成功了吗 事实上我改变了主意并转向 Electron 来开发我的应用程序【参考方案2】:

由于问题和答案非常古老,我想提供有关此解决方案的最新更新,因此根据建议的原始解决方案略有更改。

任何使用 cefsharp 的人都需要实现身份验证对话框。方法的变化是

 bool IRequestHandler.GetAuthCredentials(IWebBrowser browserControl, IBrowser browser, IFrame frame, bool isProxy, 
        string host, int port, string realm, string scheme, IAuthCallback callback)
    
        //NOTE: If you do not wish to implement this method returning false is the default behaviour
        // We also suggest you explicitly Dispose of the callback as it wraps an unmanaged resource.

        // shyam - original implemenation.
        //callback.Dispose();
        //return false;

        bool handled = false;

        // Instantiate the dialog box
        AuthDialog dlg = new AuthDialog(host); // create new dialog with username and password field.

        // Open the dialog box modally 
        dlg.ShowDialog();

        if (dlg.DialogResult == System.Windows.Forms.DialogResult.OK)
        
            // The user did not cancel out of the dialog. Retrieve the username and password.
            callback.Continue(dlg.UserName,dlg.Password);
            handled = true;
        

        return handled;
    

【讨论】:

AuthDialog 类来自哪里? Visual Studio 找不到。

以上是关于CefSharp 使用浏览器登录加载页面的主要内容,如果未能解决你的问题,请参考以下文章

CefSharp 和跨域

从 CefSharp 网络浏览器获取 HTML 源代码

C# 可以将窗体中嵌入的cefSharp浏览器页面元素值变化做成窗体可用的事件吗?

CefSharp 文档完成

CefSharp LoadHtml

在WPF中使用CefSharp嵌入浏览器