CefSharp 设置cookie 没有效果

qq_36434521 2017-07-06 09:06:17
我现在的需求是把一个cookie写入CefSharp的浏览器里进行访问网页,我不知道是我写的不对还是什么问题,通过下面的代码设置cookie 测试了就是不行

方法1:
var cookieManager = CefSharp.Cef.GetGlobalCookieManager();
await cookieManager.SetCookieAsync("http://" + domain, new CefSharp.Cookie(
{
Domain = domain,
Name = name,
Value = value,
Expires = DateTime.MinValue
});

方法2:
public void SetCefCookies(string url, CookieCollection cookies)
{
Cef.GetGlobalCookieManager().SetStoragePath(Environment.CurrentDirectory, true);
var cookieManager = Cef.GetGlobalCookieManager();
foreach (System.Net.Cookie c in cookies)
{
var cookie = new CefSharp.Cookie
{
Domain = c.Domain,
Name = c.Name,
Value = c.Value,
Expires = DateTime.MinValue
};
Task<bool> task = cookieManager.SetCookieAsync(url, cookie);
while (!task.IsCompleted)
{
continue;
}
}
}
...全文
1877 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_36385793 2020-10-07
  • 打赏
  • 举报
回复
我也解决了 给大家说一下 最关键的问题是domain 获取到什么domain 往回写要完全一致。比如淘宝的登录 有好几个域名的coookie 全部存下来就行了
ljsheng 2020-09-11
  • 打赏
  • 举报
回复
引用 14 楼 wcmddszcf 的回复:
哈哈!真不容易!经过我艰苦卓绝地研发,这个问题是被我完美地解决了!有需要的朋友可以跟我联系,我一定能帮到你!微信:wcmddszcf QQ:54515208 (CefSharp有关cookies设置,和自动登录等问题。)
大佬 加你了..请教下~
ljsheng 2020-09-11
  • 打赏
  • 举报
回复
引用 15 楼 weixin_43551815 的回复:
2020年了,这个帖子百度搜出来还是很靠前,这个问题也烦了我好几天,到处搜,最后不知道怎么搞好了,这里贴下代码。 CefSharp.Wpf版本63.0.3 页面加载完成后弹出调试工具,再F5刷新一下,可以看到请求cookie中到底有没有自己设置的cookie using System; using System.Windows; using CefSharp; using CefSharp.Wpf; namespace WpfApplication1 { public partial class MainWindow : Window { public ChromiumWebBrowser Browser = null; public MainWindow() { InitializeComponent(); Cef.EnableHighDPISupport(); CefSharpSettings.LegacyJavascriptBindingEnabled = true; CefSharpSettings.ShutdownOnExit = true; var cache = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "cefcatch"); if (!System.IO.Directory.Exists(cache)) { System.IO.Directory.CreateDirectory(cache); } var settings = new CefSettings(); settings.CachePath = cache; settings.IgnoreCertificateErrors = true; settings.PersistSessionCookies = true; settings.Locale = "zh-CN"; settings.CefCommandLineArgs.Add("--ignore-urlfetcher-cert-requests", "1"); settings.CefCommandLineArgs.Add("--ignore-certificate-errors", "1"); Cef.Initialize(settings); Fun_SetCookie(); Browser = new ChromiumWebBrowser(); Browser.Address = "www.baidu.com"; this.mainGrid.Children.Add(Browser); Browser.FrameLoadEnd += Browser_FrameLoadEnd; } private async void Fun_SetCookie() { var mycook = new CefSharp.Cookie(); mycook.Creation = DateTime.Now; mycook.Domain = "www.baidu.com"; mycook.Name = "TestCookieName"; mycook.Value = "TestCookieValue"; await CefSharp.Cef.GetGlobalCookieManager().SetCookieAsync("https://www.baidu.com", mycook); } private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e) { //弹出调试工具 Browser.ShowDevTools(); } } }
访问的时候带不上....
菜的抠jio 2020-08-31
  • 打赏
  • 举报
回复
2020年了,这个帖子百度搜出来还是很靠前,这个问题也烦了我好几天,到处搜,最后不知道怎么搞好了,这里贴下代码。
CefSharp.Wpf版本63.0.3
页面加载完成后弹出调试工具,再F5刷新一下,可以看到请求cookie中到底有没有自己设置的cookie

using System;
using System.Windows;
using CefSharp;
using CefSharp.Wpf;

namespace WpfApplication1
{
public partial class MainWindow : Window
{

public ChromiumWebBrowser Browser = null;
public MainWindow()
{
InitializeComponent();

Cef.EnableHighDPISupport();
CefSharpSettings.LegacyJavascriptBindingEnabled = true;
CefSharpSettings.ShutdownOnExit = true;

var cache = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "cefcatch");
if (!System.IO.Directory.Exists(cache))
{
System.IO.Directory.CreateDirectory(cache);
}

var settings = new CefSettings();
settings.CachePath = cache;
settings.IgnoreCertificateErrors = true;
settings.PersistSessionCookies = true;
settings.Locale = "zh-CN";
settings.CefCommandLineArgs.Add("--ignore-urlfetcher-cert-requests", "1");
settings.CefCommandLineArgs.Add("--ignore-certificate-errors", "1");

Cef.Initialize(settings);

Fun_SetCookie();

Browser = new ChromiumWebBrowser();
Browser.Address = "www.baidu.com";
this.mainGrid.Children.Add(Browser);
Browser.FrameLoadEnd += Browser_FrameLoadEnd;
}

private async void Fun_SetCookie()
{
var mycook = new CefSharp.Cookie();
mycook.Creation = DateTime.Now;
mycook.Domain = "www.baidu.com";
mycook.Name = "TestCookieName";
mycook.Value = "TestCookieValue";
await CefSharp.Cef.GetGlobalCookieManager().SetCookieAsync("https://www.baidu.com", mycook);
}

private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
{
//弹出调试工具
Browser.ShowDevTools();
}
}
}

wcmddszcf 2020-03-17
  • 打赏
  • 举报
回复
哈哈!真不容易!经过我艰苦卓绝地研发,这个问题是被我完美地解决了!有需要的朋友可以跟我联系,我一定能帮到你!微信:wcmddszcf QQ:54515208 (CefSharp有关cookies设置,和自动登录等问题。)
vatas46 2019-07-21
  • 打赏
  • 举报
回复
引用 9 楼 以奏之名 的回复:
emm 我跟楼主一样 也用这个方法 需求也差不多 先改cookie 然后打开网址后 网页会读cookie 看是否登录过 但是实际测试这个代码是没用的 我就算是打开了网页之后 再用cef去写cookie 然后让网页去读 也是读不到的 郁闷 这样只能换其他思维去做了 虽然结果一样 但是很不舒服


那你换其他思路解决问题了吗?
voap3344 2018-09-27
  • 打赏
  • 举报
回复
voap3344 2018-09-27
  • 打赏
  • 举报
回复
https://blog.csdn.net/voap3344/article/details/79484591
以奏之名 2018-08-20
  • 打赏
  • 举报
回复
emm 我跟楼主一样 也用这个方法 需求也差不多 先改cookie 然后打开网址后 网页会读cookie 看是否登录过 但是实际测试这个代码是没用的 我就算是打开了网页之后 再用cef去写cookie 然后让网页去读 也是读不到的 郁闷 这样只能换其他思维去做了 虽然结果一样 但是很不舒服
用户952717 2017-07-31
  • 打赏
  • 举报
回复
楼主解决了吗
zengliang59 2017-07-25
  • 打赏
  • 举报
回复
楼主解决了没?我也需要设置cookie
zj_zwl 2017-07-06
  • 打赏
  • 举报
回复
注意顺序: 在浏览器初始化完成后,首先设置cookies,再跳转到指定网址即可
qq_36434521 2017-07-06
  • 打赏
  • 举报
回复
QWQ~~~~QWQ
qq_36434521 2017-07-06
  • 打赏
  • 举报
回复
自己顶!!!!
qq_36434521 2017-07-06
  • 打赏
  • 举报
回复
求大神啊!!!
zj_zwl 2017-07-06
  • 打赏
  • 举报
回复
引用 5 楼 qq_36434521 的回复:
[quote=引用 4 楼 zj_zwl 的回复:] 注意顺序: 在浏览器初始化完成后,首先设置cookies,再跳转到指定网址即可
浏览器自动读取根目录下的cookie文件吗?[/quote]
引用 5 楼 qq_36434521 的回复:
[quote=引用 4 楼 zj_zwl 的回复:] 注意顺序: 在浏览器初始化完成后,首先设置cookies,再跳转到指定网址即可
浏览器自动读取根目录下的cookie文件吗?[/quote] 你可以手动设置cookies
qq_36434521 2017-07-06
  • 打赏
  • 举报
回复
引用 4 楼 zj_zwl 的回复:
注意顺序: 在浏览器初始化完成后,首先设置cookies,再跳转到指定网址即可
浏览器自动读取根目录下的cookie文件吗?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧