使用HttpWebResponse时不返回Set-Cookie参数

时间:2017-03-29 21:52:02

标签: c# cookies httpwebrequest httpwebresponse

以下代码:

string url = "https://accounts.spotify.com/en/login";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.CookieContainer = new CookieContainer();
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
    string source = sr.ReadToEnd();
    MessageBox.Show(source);
    MessageBox.Show(resp.Cookies.Count.ToString());

    foreach (Cookie cookie in resp.Cookies)
    {
        MessageBox.Show(cookie.Name, cookie.Value);
    }
}

是为每个cookie创建一个名称和值的消息框。

但事实并非如此!没有返回任何一个值。

相反,它会执行以下操作:

显示源,Cookie的数量(显示0),然后在表单加载前1-2秒内显示其他内容。

它应该以{{1​​}}

回复

正如您所看到的,即使在Fiddler回复中,您也可以看到Cookie。 Image

1 个答案:

答案 0 :(得分:0)

我不确定为什么resp.Cookies没有任何饼干。但是,如果您发现resp.Headers有一个值Set-Cookie。您可以使用它来检索响应中的cookie。

使用以下代码行来获取Cookie标头。

var cookieHeader = resp.Headers["Set-Cookie"];

这将为您提供类似

的价值
csrf_token={sometokenvalue};Version=1;Domain=accounts.spotify.com;Path=/;Secure