Получить cookie из удаленного домена с помощью HttpWebRequest

#asp.net #cookies #httpwebrequest

#asp.net #файлы cookie #httpwebrequest

Вопрос:

У меня есть страницы в разных доменах:http://domain1/page1.aspx и http://domain2/page2.aspx (на самом деле это http-обработчик). С помощью WebHttpRequest я отправляю post-запрос со страницы 1 на страницу 2.

 string resu<
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();
  

Я знаю, что в домене 2 есть cookie, но когда я захожу на страницу 2.aspx, коллекция cookie пуста.
Когда я делаю простой ответ.Перенаправить на страницу 2, cookie существует.
Так возможно ли отправлять такие запросы и где я допустил ошибку? Или, может быть, есть другой способ сделать что-то подобное?

Ответ №1:

Вы выполняете запрос на страницу 2 с помощью кода, а не через браузер. Обычно это браузер, который отправляет cookie (связанный с сайтом) на веб-серверы. В вашем случае вам необходимо передать значения имен cookie вручную в коде из ответа страницы 1 на запрос страницы 2 (предполагая, что это то, что вы хотите / имеете в виду).

Кроме того, cookie-файлы по умолчанию отключены в HttpWebRequest , поэтому, даже если серверный код page2 добавляет некоторые cookie-файлы, они не будут видны в объекте ответа, если вы не включите их с помощью свойства CookiContainer (прочитайте документацию / пример по ссылке).