通过HttpWebRequest从远程域获取cookie

时间:2011-04-18 10:15:08

标签: asp.net cookies httpwebrequest

我必须在不同的域上发布页面:http://domain1/page1.aspxhttp://domain2/page2.aspx(实际上它是http处理程序)。 通过WebHttpRequest我将发送请求从第1页发送到第2页。

string result;
var webRequest = (HttpWebRequest)WebRequest.Create("http://domain2/page2.aspx");
webRequest.Method = WebRequestMethods.Http.Post;
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = 0;
using (var webResponse = webRequest.GetResponse())
{
  if (webResponse == null)
    return null;
   var reader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8, true);    
   try
   {
     result = reader.ReadToEnd();
     if (string.IsNullOrEmpty(result))
       return null;
     }
   finally
   {
     reader.Close();
   }
 }
 return result.Deserialize();

我知道,domain2上有一个cookie,但是当我进入page2.aspx时,cookies集合是空的。 当我将简单的Response.Redirect设置为page2时,cookie就存在了。 那么有可能提出这样的要求吗?我错了吗?或者也许有另一种方法可以做这样的事情?

1 个答案:

答案 0 :(得分:0)

您正在通过代码而不是通过浏览器向第2页请求。通常是一个将cookie(与站点相关联)发送到Web服务器的浏览器。在您的情况下,您需要在第1页对page2的请求的响应中手动传输cookie名称值(假设这是您想要的/意味着什么)。

此外,默认情况下在HttpWebRequest中禁用cookie,因此即使page2服务器代码添加了一些cookie,除非使用CookiContainer属性启用它们,否则它将不会在响应对象中看到(读取链接中的文档/示例。)