温馨提示×

c#中HttpWebRequest对应302重定向为什么取不到 cookie

c#
小亿
97
2023-12-19 15:50:06
栏目: 编程语言

在C#中,HttpWebRequest是一个用于发送HTTP请求的类。当服务器返回一个带有302状态码的重定向响应时,HttpWebRequest会自动跟随重定向。

当重定向发生时,HttpWebRequest会创建一个新的HttpWebRequest对象,并将原始请求的CookieContainer属性值传递给新的请求对象。因此,新的请求对象应该能够访问到原始请求中的Cookie。

以下是一个示例代码,展示了如何获取重定向后的Cookie:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://example.com");
request.AllowAutoRedirect = true; // 允许HttpWebRequest跟随重定向
request.CookieContainer = new CookieContainer(); // 创建一个CookieContainer对象

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

// 获取重定向后的Cookie
CookieCollection cookies = response.Cookies;
foreach (Cookie cookie in cookies)
{
    Console.WriteLine(cookie.Name + ": " + cookie.Value);
}

在上述示例中,我们首先创建了一个HttpWebRequest对象,并将AllowAutoRedirect属性设置为true,以允许自动跟随重定向。接着,我们创建了一个CookieContainer对象,并将其赋值给HttpWebRequest的CookieContainer属性。

当发送请求后,如果服务器返回一个302状态码的重定向响应,HttpWebRequest会自动跟随重定向,并在新的请求中保留原始请求的Cookie。

最后,我们可以通过HttpWebResponse的Cookies属性获取重定向后的Cookie,并进行进一步处理。

0