C# HttpWebRequest Cookies not transmitted

本文关键字:transmitted not Cookies HttpWebRequest | 更新日期: 2023-09-27 18:18:36

我正在尝试传输两个手动创建的cookie与初始请求从客户端到服务器(没有响应可用,可以提取cookie)使用以下代码(如讨论的,例如在这里)

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数据。有什么建议吗?提前非常感谢!

C# HttpWebRequest Cookies not transmitted

可能是同步问题。有时问题是缺少文档中的HttpOnly cookie。出于安全原因。

cookie在HttpWebRequest中被接收,而不是被发送。

它们与web响应一起发送。

-> HttpContext.Current.Request: Contains Received Cookies

-> 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);

我不确定这是否会为您工作,但几个月前我正在做类似的事情,我手动粘贴cookie在HttpWebrequest,它工作,所以试试这个:

假设postReq= WebRequest.

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

将所有内容放在一行中....