Не все файлы cookie сохраняются с использованием cookiecontainer и webclient/httpwebrequest

StackOverflow https://stackoverflow.com/questions/4734132

Вопрос

Я пытаюсь войти на сайт, используя cookieawareclient (код здесь: C# WebClient Войдите на веб -сайт) Когда я вхожу на сайт, используя свой веб -браузер, я получаю около 10 файлов cookie. Если я отключу JavaScript и попробую войти в систему, я получаю 5 (ActiveTab, ID, MCIM, PHPSessid, имя пользователя). Но когда я пытаюсь войти в систему, используя CookieaWareClient, единственное сохраненное печенье - PHPSessId.

Какова может быть причина того, что другие файлы cookie не сохраняются? Я знаю, что WebClient не выполняет JavaScript, но 3 других файла cookie, которые генерируются при отключении JavaScript, также не сохраняются.

Это было полезно?

Решение

Во -первых, очевидный вопрос: прежде чем вы выключили сценарий в своем браузере и попытались войти в систему, вы сначала очистили свои файлы cookie? Если нет, очистите куки и попробуйте еще раз.

Предполагая, что вы сначала прояснили файлы cookie и все еще получили 5 новых файлов cookie после входа в систему без сценариев, а затем посмотрев на недостающие имена cookie, я предполагаю, что ваш Cookieawareclient на самом деле не успешно регистрируется в пользователе. Отсутствие печенья «Имя пользователя» - это то, что я ожидал, если вход не удастся. Когда вы смотрите на HTML, возвращаемый вашим запросом для входа в систему, это выглядит как успешный вход? Или это возвращает какую -то ошибку?

Если возврат HTML является успешным входом в систему, то следующим возможным виновником, на который я смотрю, будут дополнительные запросы, выполняемые браузером, но не выполняемый вашим кодом. Например, страница входа может иметь обновление мета, которое перенаправлено на другую страницу (которая устанавливает файл cookie). Или страница входа может содержать IFRAME, IMG, SCRIPT, и т. д., которые, в свою очередь, устанавливают печенье. Чтобы диагностировать это, используйте Fiddler, Firebug или другой аналогичный инструмент, чтобы увидеть, какие конкретные HTTP -запросы выполняются вашим браузером как часть процесса входа в систему. Убедитесь, что пост на странице входа в систему выполняет все установки cookie, и если нет, то вам нужно добавить дополнительные запросы в свой код после первоначального входа в систему.

Если оказывается, что есть только один http -настройка файлов cookie, то проблема заключается в том, чтобы быть заголовками HTTP или публикуйте данные, которые ваш код отправляет (или не отправляет) на сервер. Браузер, вероятно, отправляет различные заголовки или публиковать данные. Диагностика это также требует Firebug, Fiddler или аналогичного инструмента для сравнения заголовков HTTP и публикации данных, которые отправляет браузер с тем, что отправляет ваш код.

Если ни одно из этих предложений не работает, опубликуйте комментарий, и мы можем итерация.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top