Search code examples
c#.netcookiescookiecontainer

Sending cookies using HttpCookieCollection and CookieContainer


I want to tunnel through an HTTP request from my server to a remote server, passing through all the cookies. So I create a new HttpWebRequest object and want to set cookies on it.

HttpWebRequest.CookieContainer is type System.Net.CookieContainer which holds System.Net.Cookies.

On my incoming request object:

HttpRequest.Cookies is type System.Web.HttpCookieCollection which holds System.Web.HttpCookies.

Basically I want to be able to assign them to each other, but the differing types makes it impossible. Do I have to convert them by copying their values, or is there a better way?


Solution

  • Here's the code I've used to transfer the cookie objects from the incoming request to the new HttpWebRequest... ("myRequest" is the name of my HttpWebRequest object.)

    HttpCookieCollection oCookies = Request.Cookies;
    for ( int j = 0; j < oCookies.Count; j++ ) 
    {
        HttpCookie oCookie = oCookies.Get( j );
        Cookie oC = new Cookie();
    
        // Convert between the System.Net.Cookie to a System.Web.HttpCookie...
        oC.Domain   = myRequest.RequestUri.Host;
        oC.Expires  = oCookie.Expires;
        oC.Name     = oCookie.Name;
        oC.Path     = oCookie.Path;
        oC.Secure   = oCookie.Secure;
        oC.Value    = oCookie.Value;
    
        myRequest.CookieContainer.Add( oC );
    }