Почему пропущено одно печенье? - PullRequest
1 голос
/ 12 апреля 2011

Я очищаю страницу, которая является результатом перенаправления: сначала я захожу на страницу1, затем она перенаправляет на страницу2 через http-equiv="refresh". Я пересматриваю страницу2. Содержимое на странице 2 основано на некоторых наборах файлов cookie страницы. Я вижу, что страница 1 возвращает 2 файла cookie, но когда я запрашиваю страницу 2 (при отправке того же CookieContainer, отсутствует один файл cookie. Что не так в моем коде?

Спасибо:

Первый : Я создаю CookieContainer и HttpWebRequest и запрашиваю для page1.

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(eQuery);<br> req.AllowAutoRedirect = true; // but it doesn't autoredirects the meta-refresh<br> req.CookieContainer = cookiesContainer;

Это результат, который я получаю при посещении страницы1

HTTP/1.1 200 OK <br> Date: Tue, 12 Apr 2011 19:14:06 GMT<br> Server: (...)<br> Set-Cookie: NAME1=VALUE1; path=/<br> Expires: Thu, 19 Nov 1981 08:52:00 GMT<br> Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0<br> Pragma: no-cache<br> Set-Cookie: NAME2=VALUE2; expires=Wed, 13-Apr-2011 19:14:06 GMT<br> Content-Length: 174<br> Keep-Alive: timeout=5, max=100<br> Connection: Keep-Alive<br> Content-Type: text/html<br> (...)

Пока все в порядке, у меня есть два файла cookie и в контейнере два объекта cookie.

Затем я анализирую значение "содержимого" meta http-equiv для следующего URL. И запросите его, используя аналогичный код и используя тот же контейнер. Но отправлено только одно печенье. Вот HTTP отправлено:

GET DETECTED_URL_IN_HTTP_EQUIV_REFRESH HTTP/1.1 <br> User-Agent: (...) <br> Host: example.com <br> Cookie: NAME1=VALUE1

Как видите, файл cookie NAME2 отсутствует. Почему это происходит? Есть ли что-то связанное между двумя cookie-файлами (у одного есть путь, а у другого - дата окончания срока действия) Любая идея, как я могу передать два куки?

PS: у меня нет доступа к странице 1, поэтому я не могу указать путь или срок действия файлов cookie. Я ломаю эти страницы.

Спасибо.

1 Ответ

2 голосов
/ 13 апреля 2011

Если вы не укажете путь в вашем файле cookie, по умолчанию будет указан путь, по которому он был запрошен.Поэтому, если вы получили cookie по этому запросу без указания пути:

http://contoso.com/subfolder/test.aspx

Браузер отправит этот cookie только для дополнительных запросов в каталоге /subfolder/.Чтобы браузер отправлял его обратно по всем путям, необходимо указать path=/ при настройке файла cookie.

...