使用CefSharp在.Net程序中嵌入Chrome瀏覽器(八)——Cookie

原文:使用CefSharp在.Net程序中嵌入Chrome瀏覽器(八)——Cookiehtml

 

CEF中的Cookie是經過CookieManager來管理的,能夠用它來設置發送的Cookie。chrome

發送Cookie瀏覽器

發送Cookie的一個基本示例以下:服務器

var cookieManager = _chrome.GetCookieManager();
cookieManager.SetCookie("http://localhost:5000/test", new Cookie()
{
    Name  = "name",
    Value = "123"
});cookie

不過,GetCookieManager函數只有ChromiumWebBrowser初始化完成後才能使用,能夠經過_chrome.IsBrowserInitialized函數判斷,或者感知IsBrowserInitializedChanged事件。函數

 

發送全局Cookiehtm

自己系統有一個全局的CookieManager,用它能夠設置全部請求的Cookieblog

var cookieManager = Cef.GetGlobalCookieManager();
await cookieManager.SetCookieAsync("http://127.0.0.1:5000", new Cookie()
{
    Name    = "aaa",
    Value   = "bbb",
});事件

這種方式下,全部的請求都默認攜帶該cookie,用來傳遞用戶的身份信息等很是方便。get

 

讀取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());};

相關文章
相關標籤/搜索