【问题标题】:How to change HttpWebRequest cookies?如何更改 HttpWebRequest cookie?
【发布时间】:2011-06-15 00:02:47
【问题描述】:

HttpWebRequest 中的Cookies 是只读的,但我需要更改一些 cookie。

我可以使用Set-Cookie 标头,但它很容易出错。有没有办法以OO 的方式更改HttpWebRequest cookie?

如果没有,我怎样才能得到 System.Net.Cookie 的标题文本? (我将在Set-Cookie 标头中使用它)

【问题讨论】:

    标签: c# cookies httpwebresponse


    【解决方案1】:

    看看 http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.cookiecontainer(v=VS.90).aspx

    您需要初始化 CookieContainer 对象并将您的 cookie 添加到其中。

    如果您从 HttpWebResponse 获取 cookie,只需将集合添加到 CookieContainer(请参阅:http://msdn.microsoft.com/en-us/library/system.net.cookiecontainer.add(v=VS.90).aspx)。

    要更改一个特定的 cookie,您应该访问它并更改其值:

    cookies["cookie_name"].Expiration = ...
    

    【讨论】:

      【解决方案2】:
      HttpWebRequest targetrequest = (HttpWebRequest)WebRequest.Create(targeturl);
      targetrequest.CookieContainer = new CookieContainer();
      foreach (string clientcookie in Request.Cookies) {
          Cookie targetcookie = new Cookie(clientcookie, Request.Cookies[clientcookie].Value, "/", targetrequest.RequestUri.Host);
          targetrequest.CookieContainer.Add(targetcookie);
      }
      

      【讨论】:

      • 问题是targetrequest中的CookieCollectiontargetrequest.Headers不同步。如果我操纵集合,它不会影响Header 字符串。
      • Set-Cookie 是来自服务器的标头,对于请求,您应该设置 Cookie 标头
      猜你喜欢
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      • 1970-01-01
      相关资源
      最近更新 更多