使用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());
};


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM