网站返回482无效的cookie

时间:2017-09-27 14:22:23

标签: c# cefsharp

在我使用浏览器加载网址后,我发送了一个请求:

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?

0 个答案:

没有答案