CefSharp存储Cookie和读Cookie

18 篇文章 3 订阅
2 篇文章 0 订阅

背景:需要在Winform客户端程序中存储Cookie,并可以取出来:

1.存储Cookie

 var cookieManager = CefSharp.Cef.GetGlobalCookieManager();
 var domain="www.baidu.com";
 cookieManager.SetCookie("http://"+domain, new CefSharp.Cookie
                                {
                                    Domain= domain,
                                    Name ="formText",//Cookie名称
                                    Value= station_name,//Cookie值
                                    Expires=DateTime.Now.AddDays(7)//过期时间
                                });

2.取Cookie

(1)需要先继承接口 ICookieVisitor

public class CookieVisitor : CefSharp.ICookieVisitor  
    {  
        public event Action<CefSharp.Cookie> SendCookie;  
        public bool Visit(CefSharp.Cookie cookie, int count, int total, ref bool deleteCookie)  
        {  
            deleteCookie = false;  
            if (SendCookie != null)  
            {  
                SendCookie(cookie);  
            }  

            return true;  
        }  
    } 

(2)定义事件

string cookies="";
private void visitor_SendCookie(CefSharp.Cookie obj)
        {
            cookies+=obj.Name+":"+obj.Value;
            if(obj.Name="userid"){
                //选取指定cookie
            }
        }

(3)取Cookie

CookieVisitor visitor = new CookieVisitor();
visitor.SendCookie += visitor_SendCookie;//注册事件
var cookieManager = CefSharp.Cef.GetGlobalCookieManager();
cookieManager.VisitAllCookies(visitor);//访问所有cookie,这一步一定要有
//  cookieManager.VisitUrlCookies("http://www.baidu.com", true, visitor);//访问指定网站下Cookie

就可以取出来了

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CEFSharp 中实现 cookie 和 session 的隔离,可以通过以下步骤实现: 1. 使用 CEFSharp 创建一个 CefSettings 对象,并启用多个实例(MultipleInstance)模式。这样可以确保每个实例都有各自独立的 cookie 和 session。 ```csharp var settings = new CefSettings { MultiThreadedMessageLoop = true, ExternalMessagePump = false, MultiThreadedMessageLoop = true, CachePath = "cache_path_here", UserDataPath = "user_data_path_here" }; Cef.Initialize(settings); ``` 2. 在每个 CEFSharp 实例中,使用不同的 UserDataPath 来存储 cookie 和 session 数据。这将确保每个实例都有自己的独立数据存储路径。 ```csharp var settings1 = new BrowserSettings { ApplicationCacheDisabled = true, FileAccessFromFileUrlsAllowed = true, UniversalAccessFromFileUrlsAllowed = true, WebSecurityDisabled = true }; var browser1 = new ChromiumWebBrowser("https://www.example.com", settings1); ``` ```csharp var settings2 = new BrowserSettings { ApplicationCacheDisabled = true, FileAccessFromFileUrlsAllowed = true, UniversalAccessFromFileUrlsAllowed = true, WebSecurityDisabled = true }; var browser2 = new ChromiumWebBrowser("https://www.example2.com", settings2); ``` 以上代码创建了两个独立的浏览器实例,它们分别使用不同的 UserDataPath 存储 cookie 和 session 数据。 通过这种方式,你可以实现在 CEFSharp 中实现 cookie 和 session 的隔离。每个实例都有自己的独立数据存储路径,不会相互干扰。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值