0

у меня есть заголовки, в них есть Set-Cookie: .... и кучу cookies

И есть

IEnumerable<Cookie> responseCookies = cookieContainer.GetCookies(baseAddress).Cast<Cookie>();
            foreach (Cookie cookie in responseCookies)
            {
                Console.WriteLine(cookie.Name + ": " + cookie.Value);
            }

Который мне выдает 4 cookies

xman_us_f: x_l=0  по типу этого

Вопрос. Set-Cookies я должен устанавливать как заголовок, или я должен как-то от туда вытаскивать нужные мне cookies?

 string data;
            Uri url = new Uri("https://passport.aliexpress.com/newlogin/account/check.do?appName=aebuyer&fromSite=13");
            var baseAddress = new Uri("https://login.aliexpress.ru");
            var cookieContainer = new CookieContainer();

            var handler = new HttpClientHandler { CookieContainer = cookieContainer };
            var client = new HttpClient(handler) { BaseAddress = baseAddress };

            var result = await client.GetAsync(baseAddress);

            data = await result.Content.ReadAsStringAsync();
            var head = result.Headers;

            foreach (var a in head)
            {
                Console.WriteLine(a.Key + ": " + a.Value.FirstOrDefault());
               // client.DefaultRequestHeaders.Add(a.Key, a.Value.FirstOrDefault());
            }

            IEnumerable<Cookie> responseCookies = cookieContainer.GetCookies(baseAddress).Cast<Cookie>();
            foreach (Cookie cookiew in responseCookies)
            {
                Console.WriteLine(cookiew.Name + ": " + cookiew.Value);
                cookieContainer.Add(cookiew);
            }
  • Куки, это куки, они хранятся в контейнере кук, заголовок же вам говорит, что сервер установил вам новую куку с такими то значениями. – EvgeniyZ Apr 22 '20 at 11:19
  • @EvgeniyZ Так а почему куки контейнер, не показывает эти куки, которые мне устанавливает сервер. Или как я понимаю, это идет все автоматически, а куки контейнер выдает другие куки, которые я уже сам вручную установить должен? – Prince Tag Apr 22 '20 at 11:39
  • Найдете ответ, дайте знать) Ну а так, некоторые Cookie имеют "защиту", они помечаются как HttpOnly, в теории, они должны быть в контейнере и если он используется 1 во всех запросах, то куки будут отправляться как надо, но тут я не уверен. – EvgeniyZ Apr 22 '20 at 11:45
  • @EvgeniyZ Получается он автоматически устанавливает куки, которые в заголовках, но куки контейнер не может их показать. Следовательно мне не нужно их устанавливать? – Prince Tag Apr 22 '20 at 12:08
  • Я использую 1 контейнер, и отправляю 2 последовательных post, но контейнер их все равно не выдает, увы – Prince Tag Apr 22 '20 at 12:08
  • добавь пример строки Set-Cookie которые не можешь получить, и пример как проверяешь. Ага, как проверяешь - вижу. – Grundy Apr 22 '20 at 22:02
  • @EvgeniyZ. локально у меня не воспроизводится ¯\(ツ) – Grundy Apr 22 '20 at 22:07
  • @Grundy Set-Cookie: ali_apache_id=10.182.213.149.1587672694661.406678.7; path=/; domain=.aliexpress.com; expires=Wed, 30-Nov-2084 01:01:01 GMT только их там еще больше, это первый заголовок, т.к стоит у меня Headers.Value.FirstOrDefault(). В fiddler показывает дофига устанавливаемых куки, все они по идее отображаются в Set-Cookie, а в cookiecontainer меньше половины от всех – Prince Tag Apr 23 '20 at 20:13
  • @PrinceTag, добавь это в сам вопрос – Grundy Apr 23 '20 at 20:30
  • и как настраивал HttpClient: какой base address и путь запроса – Grundy Apr 23 '20 at 20:36
  • есть подозрение, что дело в домене, который ты передаешь в cookieContainer.GetCookies(baseAddress) – Grundy Apr 23 '20 at 20:37
  • @Grundy Добавил – Prince Tag Apr 23 '20 at 20:40
  • @Grundy Поискал аналогичные сайты, попал на сайт microsoft, у них тоже там есть подобные куки. Попробовав и выяснил, что проблема в ., которая располагается в начале и в том, что часть "кук" ставит сторонний запрос, который сайт делает в фоне. Поискав, выяснил, что уже давно есть баг, взял такой код и вроде он отдает куки, где адрес указан через . в начале. Проверил на MS, отдал то, что необходимо, но не до конца уверен в данном решение, ибо вроде работает, а вроде через ж*. Но как вариант, да. – EvgeniyZ Apr 23 '20 at 21:39
  • @EvgeniyZ, заходи в чат, выше ссылка – Grundy Apr 23 '20 at 21:53

0 Answers0