Получить куки из удаленного домена по HttpWebRequest - PullRequest
0 голосов
/ 18 апреля 2011

У меня есть страницы на разных доменах: http://domain1/page1.aspx и http://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();

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

1 Ответ

0 голосов
/ 18 апреля 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...