在我使用浏览器加载网址后,我发送了一个请求:
var frame = browser.GetMainFrame();
var request = frame.CreateRequest();
request.Url = "urlhere";
request.Method = "PUT";
NameValueCollection headers = new NameValueCollection();
headers.Add("Host", "hosthere");
//etc...
request.Headers = headers
request.InitializePostData();
var element = request.PostData.CreatePostDataElement();
element.Bytes = Encoding.UTF8.GetBytes("mydata") ;
request.PostData.AddElement(element);
frame.LoadRequest(request);
然而我收到错误:
{“message”:“Cookie无效”,“代码”:482}
CefSharp初始化如下:
CefSettings settings = new CefSettings();
settings.CefCommandLineArgs.Add("enable-npapi", "1");
Cef.Initialize(settings);
我还有多个浏览器,其创建方式如下:
var contextSettings = new RequestContextSettings();
contextSettings.CachePath = cachePath;
var browser = new ChromiumWebBrowser(urlStr)
{
BrowserSettings = new BrowserSettings()
{
Javascript = CefState.Enabled,
Plugins = CefState.Enabled,
},
RequestContext = new RequestContext(contextSettings),
RequestHandler = new CustomRequestHandler,
};
如上面的代码段所示,我正在为每个浏览器会话使用缓存路径。饼干不会位于那里吗?
如何检索Cookie并为此请求设置?
另外,我没有设置Content-Length
标题。这是在发送帖子请求时由cefSharp
自动设置的吗?
修改
要获取我正在做的cookie:
var cookies = await Cef.GetGlobalCookieManager().VisitAllCookiesAsync();
但是列表总是包含0个cookie。
我还清除了缓存,加载页面后,我注意到创建了Cookies
文件。编辑它(看起来像一个SQLite3数据库)表明实际上已经创建了cookie,而且还有我所介入的那些。
那么为什么经理不能获得cookie?