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

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

net 事件 consola delete www. etc 設置 size spa

原文:使用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