【问题标题】:Why can I not iterate through the cookies when I perform a request to an url?为什么我在对 url 执行请求时无法遍历 cookie?
【发布时间】:2021-01-25 23:18:03
【问题描述】:

我正在尝试向https://www.footlocker.dk/ 执行获取请求。访问此 url 时,我需要获取创建的会话。

我执行如下请求:

            string url = "https://www.footlocker.dk/";

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Proxy = null;
            request.CookieContainer = new CookieContainer();

            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {

                foreach (Cookie cookie in response.Cookies)
                {
                    Console.WriteLine("name=" + cookie.Name);
                    Console.WriteLine("value=" + cookie.Value);
                    Console.WriteLine("path=" + cookie.Path);
                    Console.WriteLine("domain=" + cookie.Discard);
                    
                }
            }

但是它没有返回任何 cookie..

我需要这些 cookie,当我想继续并在之后发出发布请求时,对这个 url 执行特定操作。

问候!

【问题讨论】:

  • 您确定这些 cookie 是由文档 http 响应设置的,而不是 javascript XHR 调用?
  • 不,我不确定:S 我该如何验证?
  • 例如,使用浏览器的开发工具检查网络调用。您可以查看哪个请求(文档、XHR 等)设置了 cookie。

标签: c# http cookies get


【解决方案1】:

检查响应负载:

您会看到调用:https://www.footlocker.dk/api/session?timestamp=1611587725706 具有如下响应标头:

set-cookie: JSESSIONID=orfy8ma22lox1nd8wxdyf8h4e.fzcxwefapipdb018883; Path=/; HTTPOnly

https://www.footlocker.dk/ 不设置此类 cookie。请记住,如果您通过调用,您会看到多个 cookie 集,并且您不能绝对确定需要哪一个才能使事情正常工作,尽管我相信您可以通过制作获得所需的 cookie会话调用。

最终的 cookie 定义如下所示:

【讨论】:

  • 太棒了,非常感谢。如果我想存储这个返回的响应头会是什么样子,这样我就可以在以后想要发出的请求中使用它,如果你不介意的话:S
  • 您可以将cookie本地存储在变量中,并将它们添加到后续请求中。如果你想在另一个上下文中使用它,那么你可能需要存储在一个持久选项中,比如数据库。
  • 别忘了点赞/接受有用的答案
猜你喜欢
  • 1970-01-01
  • 2018-03-08
  • 2017-07-22
  • 1970-01-01
  • 2021-12-15
  • 2019-06-12
  • 2020-05-08
  • 1970-01-01
  • 2014-09-13
相关资源
最近更新 更多