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

Я использую Visual Studio 2010 и .NET Framework 4.0.

Код:

public void LoginTo(string username, string password)
    {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(this.Url + "login.php");
        string values =
            "username=" + username +
            "&password=" + password +
            "&redirect=" +
            "&autologin=on" +
            "&login=Log in";

        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded";
        req.ContentLength = values.Length;
        req.KeepAlive = true;
        req.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0";
        CookieContainer a = new CookieContainer();
        Uri uri = new Uri(this.Url);

        req.CookieContainer = a;

        ServicePointManager.Expect100Continue = false; // prevents 417 error

        using (StreamWriter writer = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.Default))
        {
            writer.Write(values);
        }

        HttpWebResponse response = (HttpWebResponse)req.GetResponse();
        StreamReader reader = new StreamReader(response.GetResponseStream());

        formResponseWatcher formResponseWatcher = new formResponseWatcher();
        formResponseWatcher.SetResponseContent(reader.ReadToEnd());
        formResponseWatcher.Show();

        foreach (Cookie cookie in response.Cookies)
        {
            cookie.HttpOnly = true;
            Cookie = Cookie + cookie + ";";
        }
    }

Проблема в том, что CookieContainer не содержит всех файлов cookie.В Firefox всего 5 файлов cookie, но CookieContainer получает только 3. Мне нужно, чтобы все файлы cookie регистрировались все время.Я думаю, что есть проблема с доменами, такими как: .domain.com.Помоги мне!

1 Ответ

1 голос
/ 02 апреля 2011

Возможные случаи:

  • только 3 файла cookie возвращаются с сервера.Другие файлы cookie либо устанавливаются в коде JavaScript, либо устанавливаются другими запросами
  • заголовок set-cookie сформирован достаточно некорректно, чтобы .Net не мог выполнить синтаксический анализ, но это нормально для Firefox (это неверный случай).
  • Также возможно, что браузер отправляет некоторую дополнительную информацию (например, заголовок реферера), которая заставляет сервер добавлять дополнительные куки.

Пожалуйста, используйте Fiddler или другой инструмент HTTP-наблюдателя, чтобы увидеть, какой ответ приходит с сервера набраузер и ваше приложение.Вероятно, сервер просто возвращает 3 куки.

...