zoukankan      html  css  js  c++  java
  • 使用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());
    };

  • 相关阅读:
    shell管道和重定向
    shell脚本
    Hexo学习笔记--常用命令及部署步骤
    Git学习笔记--Git常用命令
    Spark link集合
    Struts2学习笔记--Struts2的体系结构
    JNI错误记录--JNI程序调用本地库时JVM崩溃
    Hibernate学习笔记--使用ThreadLocal
    Hibernate学习笔记--核心编程
    Hibernate学习笔记--映射配置文件详解
  • 原文地址:https://www.cnblogs.com/wangchuang/p/11013078.html
Copyright © 2011-2022 走看看