使用CefSharp在.Net程序中嵌入Chrome浏览器——Cookie

Posted wangchuang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用CefSharp在.Net程序中嵌入Chrome浏览器——Cookie相关的知识,希望对你有一定的参考价值。

原文:使用CefSharp在.Net程序中嵌入Chrome浏览器(八)——Cookie

 

CEF中的Cookie是通过CookieManager来管理的,可以用它来设置发送的Cookie。

发送Cookie

发送Cookie的一个基本示例如下:

var cookieManager = _chrome.GetCookieManager();
cookieManager.SetCookie("http://localhost:5000/test", new Cookie()

    Name  = "name",
    Value = "123"
);

不过,GetCookieManager函数只有ChromiumWebBrowser初始化完成后才能使用,可以通过_chrome.IsBrowserInitialized函数判断,或者感知IsBrowserInitializedChanged事件。

 

发送全局Cookie

本身系统有一个全局的CookieManager,用它可以设置所有请求的Cookie

var cookieManager = Cef.GetGlobalCookieManager();
await cookieManager.SetCookieAsync("http://127.0.0.1:5000", new Cookie()

    Name    = "aaa",
    Value   = "bbb",
);

这种方式下,所有的请求都默认携带该cookie,用来传递用户的身份信息等非常方便。

 

读取Cookie

如果要获取服务器返回的Cookie,则需要自己实现一个ICookieVisitor

class CookieVisitor : ICookieVisitor

    public bool Visit(Cookie cookie, int count, int total, ref bool deleteCookie)
    
        var name  = cookie.Name;
        var value = cookie.Value;
        return true;
    
    public void Dispose()
    
    

然后在CookieManager中关联CookieVisitor,当页面加载完成后,会调用Visitor访问cookie。

_chrome         = new ChromiumWebBrowser();
_chrome.Address = "http://127.0.0.1:5000/test";
_chrome.FrameLoadEnd += (_s, _e) =>

    var cookieManager = _chrome.GetCookieManager();
    cookieManager.VisitAllCookies(new CookieVisitor());
;

以上是关于使用CefSharp在.Net程序中嵌入Chrome浏览器——Cookie的主要内容,如果未能解决你的问题,请参考以下文章

使用CefSharp在.Net程序中嵌入Chrome浏览器——Javascript交互

使用CefSharp在.NET中嵌入Google kernel

我已成功地将 CefSharp 嵌入到 .NET 4.0 应用程序中。是不是可以让 jQuery 调用在 DOM 上工作?

在WPF中使用CefSharp嵌入浏览器

使用CefSharp在C#访问网站,支持x86和x64

在winform中使用cefsharp.winform嵌入浏览器(含视频教程)