C#HttpWebRequest Cookies未传输

时间:2014-08-19 14:24:19

标签: c# cookies httpwebrequest

我正在尝试使用以下代码将两个手动创建的Cookie与初始请求从客户端发送到服务器(无响应,可以提取Cookie)(如所讨论的那样) here

HttpWebRequest request = 
      (HttpWebRequest)HttpWebRequest.Create(
      "https://intra.group.net:5115/app/search.do");

//...

CookieContainer oCookies = new CookieContainer();
CookieCollection cookieGroup = new CookieCollection();
Cookie c1 = new Cookie("name1", "value1", "/", ".intra.group.net");
Cookie c2 = new Cookie("name2", "value2", "/", ".intra.group.net");
cookieGroup.Add(c1);
cookieGroup.Add(c2);
oCookies.Add(cookieGroup);
request.CookieContainer = oCookies;

但原始通信不包含(根据Fiddler)任何Cookie数据。有什么建议为什么他们失踪?非常感谢你提前!

3 个答案:

答案 0 :(得分:0)

也许这是一些同步问题。有时,出于安全原因,问题是Document.Cookie中缺少的HttpOnly cookie。您可以尝试此解决方案here

答案 1 :(得分:0)

在HttpWebRequest中收到Cookie,而不是发送。

它们是通过WebReponse发送的。

- > HttpContext.Current.Request:包含收到的Cookie

- > HttpContext.Current.Response:包含发送回浏览器的cookie。

将Cookie添加到响应中而不是请求中。

HttpCookie cookie = HttpContext.Current.Response.Cookies["someCookie"]
if (cookie != null)
  HttpContext.Current.Response.Cookies.Remove(cookie);

HttpCookie updatedCookier = new HttpCookie....
HttpContext.Current.Response.Cookies.Add(updatedCookie);

答案 2 :(得分:0)

我不确定这对你是否有用,但几个月前我正在做类似的事情,我在HttpWebrequest中手动粘贴cookie,但它有效,请试试这个:

假设postReq = WebRequest。

HttpWebRequest request =(HttpWebRequest)HttpWebRequest.Create("SomeUrl");
postReq.Headers.Add("Cookie: PREF=ID=17337a16083851b1:");// You can get this from fiddler

将它全部发布在一行......