2013-06-03 37 views
0

我正在对安全环境中的服务开发点进行http请求调用,因此必须存在某些cookie或请求将失败。如何在进行http请求调用时传递所有cookie?

当用户登录到系统时,他们拥有所有必要的Cookie设置。

我该如何抓取所有的cookie,并在我的http请求中传递它们?

 var request = (HttpWebRequest)WebRequest.Create(requestUrl); 
     request.Method = "GET"; 

     request.Timeout = 1000 * 30; 
     request.ReadWriteTimeout = 1000 * 60; 

     using (WebResponse webResponse = request.GetResponse()) 
     { 
      using (Stream responseStream = webResponse.GetResponseStream()) 
      { 
       if (responseStream == null) 
       { 
       } 
       else 
       { 
        using (var reader = new StreamReader(responseStream)) 
        { 
         responseData = reader.ReadToEnd(); 
        } 
       } 
      } 
     } 

     return responseData; 

回答

0

您听起来像您正在构建反向代理。 Code Project在如何完成这个http://www.codeproject.com/Articles/18490/Reverse-Proxy-in-C-NET-v2-0有一个很好的帖子,其中包括从一个请求到另一个请求的Cookie复制。

请注意,您只会收到托管域名的Cookie。如果您将请求代理到不同的域,发送请求的浏览器将不会向您发送针对您所定位域的Cookie。

例如,如果您的应用程序位于http://dev.local/,并且您将请求转发至https://stackoverflow.com/,则在您的请求中,您不会为域名stackoverflow.com提供任何Cookie。