cefsharp设置cookie_使用CefSharp在.Net程序中嵌入Chrome浏览器(八)——Cookie

本文详细介绍了如何使用CefSharp在.Net程序中管理Cookie,包括通过CookieManager设置和读取Cookie,以及如何利用全局CookieManager发送全局Cookie。通过示例代码展示了如何在ChromiumWebBrowser初始化后设置Cookie,以及在页面加载完成后访问Cookie。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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浏览器(二)——参数设置

在实现了.Net程序中嵌入Chrome浏览器后,下一步的个性化操作就是加入一些设置了,在前面的文章中,我们可以看到在使用Chrome控件前,有如下一个操作: var setting = new Cef ...

使用CefSharp在.Net程序中嵌入Chrome浏览器(一)——简介

有的时候,我们需要在程序中嵌入Web浏览器,其实.Net Framework中本身就提供了WebBrowser控件,本身这个是最简单易用的方案,但不知道是什么原因,这个控件在浏览网页的时候有些莫名的卡 ...

使用CefSharp在.Net程序中嵌入Chrome浏览器(九)——性能问题

在使用CEF的过程中,我发现了一个现象:WPF版的CEF比Chrome性能要差:一些有动画的地方会掉帧(例如,CSS动画,全屏图片拖动等),视频播放的效果也没有Chrome流畅. 查了一下相关资料,发 ...

使用CefSharp在.Net程序中嵌入Chrome浏览器(十)——独立文件夹部署

CefSharp本身携带了一大堆文件,这些文件默认直接释放在exe文件底下,这种方式本身没有什么问题,但多了一大堆文件后不是很好看.本文这里就介绍一个方法,使得可以将CEF相关的文件部署到独立的文件夹 ...

使用CefSharp在.Net程序中嵌入Chrome浏览器(六)——调试

chrome强大的调试功能令许多开发者爱不释手,在使用cef的时候,我们也可以继承这强大的开发者工具. 集成调试: 我们可以使用如下函数直接使用集成在chrome里的开发者工具 _chrome.Sho ...

使用CefSharp在.Net程序中嵌入Chrome浏览器(四)——启动优化

在实际使用过程中,发现有的客户端会出现chrome加载网页过慢问题,定位后发现很多是因为设置系统代理所致,此时可以通过如下启动参数禁止系统代理. {"proxy-auto-detect&qu ...

使用CefSharp在.Net程序中嵌入Chrome浏览器(七)——右键菜单

一个常用的功能就是禁止浏览器本身的右键菜单,靠在WPF中拦截鼠标事件是不行的,可以通过设置MenuHandler来实现. 首先实现一个IContextMenuHandler. public class ...

使用CefSharp在.Net程序中嵌入Chrome浏览器(三)——基本操作

CefSharp本身提供了WPF和WinForm两个版本的控件,这两个版本的控件使用方法大同小异,由于我WPF的版本用的较多,这里就简单的介绍下WPF版的CEFSharp控件的用法. 加载页面: Ch ...

使用CefSharp在.Net程序中嵌入Chrome浏览器(五)——Javascript交互

要在CEF中和网页的JS进行交互,首先我们要通过设置启用Javascrit集成功能. CefSharpSettings.LegacyJavascriptBindingEnabled = true; 调 ...

随机推荐

git 教程(4)--版本回退

现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下: Git is a distributed version control system. ...

Lua Script

注意事项: 1:Lua 只支持数字类型,浮点类型的值,在转换成Redis 协议值得时候,小数点会被忽略(如果需要在Lua中使用浮点值,建议用字符串代替) 2:Lua 返回表中如果遇到nils(空),转 ...

.net中如何实现多线程

l线程肯定也是要执行一段代码的.所以要产生一个线程,必须先为该线程写一个方法,这个方法中的代码就是该线程运行所要执行的代码.(找个人来做一件事情) l线程启动时,通过委托调用该方法. (委托的好处) ...

LeetCode 206. Reverse Linked List倒置链表 C++

Reverse a singly linked list. Example: Input: 1->2->3->4->5->NULL Output: 5->4-&gt ...

Flink - ShipStrategyType

对于DataStream,可以选择如下的Strategy, /** * Sets the partitioning of the {@link DataStream} so that the ou ...

LINUX的DNS怎么设置?linux下如何修改DNS地址

LINUX的DNS怎么设置?linux下如何修改DNS地址 https://jingyan.baidu.com/article/870c6fc32c028eb03fe4be30.html Linux下 ...

Win环境 Android Studio使用Git 教程 ( 生成SSH key )

Github和码云都提供SSH协议,即用户可以用公钥认证方式连接到码云的SSH服务器.这就需要生成并部署SSH Key.下面就是我生成SSH Key的步骤,希望有所帮助: Git生成SSH key 在 ...

【BZOJ1858】序列操作(线段树)

[BZOJ1858]序列操作(线段树) 题面 BZOJ 题解 这题思路很简单,细节很烦,很码 维护区间翻转和区间赋值标记 当打到区间赋值标记时直接覆盖掉翻转标记 下放标记的时候先放赋值标记再放翻转标记 ...

Jmeter 接口测试间的引用

Jmeter做接口测试,几乎里面所有的业务实现都依赖登录,我竟然傻不垃圾的每个CASE都写了登录  ......请原谅我的笨 右键 线程组 --> 添加  --> 逻辑控制器 --> ...

SQL修改字段默认值、获取字段默认值

一.SQL修改字段默认值 alter table 表名 drop constraint 约束名字 说明:删除表的字段的原有约束 alter table 表名 add constraint 约束名字 D ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值