Не все куки сохраняются с помощью cookiecontainer и webclient / httpwebrequest - PullRequest
0 голосов
/ 19 января 2011

Я пытаюсь войти на сайт, используя CookieAwareClient (код здесь: C # WebClient Войти на сайт ).Когда я захожу на сайт через мой веб-браузер, я получаю около 10 файлов cookie.Если я отключаю JavaScript и пытаюсь войти в систему, я получаю 5 (activeTab, id, mcim, PHPSESSID, username).Но когда я пытаюсь войти в систему с помощью CookieAwareClient, единственный сохраненный файл cookie - это PHPSESSID.

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

1 Ответ

2 голосов
/ 05 февраля 2011

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

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

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

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

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

...