我怎么知道哪个cookie必须做出正确的HttpWebRequest?

Ali*_*Tor 16 c# cookies httpwebrequest

我正在开发一个下载管理器并尝试使用获取cookie所需的内容HttpWebRequest.我想将我的应用程序集成到Chrome,因此我可以从浏览器中获取必要的Cookie标头和值.

但首先我需要知道是否需要cookie才能获得要下载的内容以及它们是哪些cookie.我找不到有关此主题的任何有用资源.

这就是我的想象:

HttpWebRequest req = (WebRequest.Create(url)) as HttpWebRequest;
//At first, get if cookies are necessary?
//If it is, get the required cookie headers 
//Then add the cookies to the request
CookieContainer cc = new CookieContainer();
Cookie c1 = new Cookie("header1", "value1");
Cookie c2 = new Cookie("header2", "value2");
CookieCollection ccollection = new CookieCollection();
ccollection.Add(c1);
ccollection.Add(c2);
cc.Add(uri, ccollection);
req.CookieContainer = cc;
//Get response and other stuff......
Run Code Online (Sandbox Code Playgroud)

我该怎么做这些步骤?

Ole*_*kiy 4

从服务器获取内容所需的cookie由HTTP响应的"Set-Cookie"标头中的该服务器指定.通用方案是:

  1. 客户端向服务器发出HTTP请求(这可能是登录页面或下载页面)
  2. 服务器响应包含"Set-Cookie"标头的HTTP响应
  3. 客户记得所有这些cookie
  4. 客户端使用步骤3中存储的cookie来处理对同一服务器的所有后续请求

现在,考虑到您在Chrome中的集成方案,我认为初始请求(步骤1到3)不会由您的应用程序完成,而是由Chrome本身完成.Cookie将存储在Chrome的Cookie存储区中.因此,您的应用程序需要做的是从Chrome获取您要下载的域的所有Cookie,并在请求中包含这些Cookie(步骤4).

有关如何使用Chrome API与其Cookie存储库进行交互的信息,请参阅chrome.cookies文档;有关如何在HTTP响应中指定Cookie的详细说明,请参阅Mozilla的Set-Cookie文档.