无法从重定向响应中获取 cookie

Not being able to get cookie from a redirect response

我正在尝试调用 api 身份验证方法,它不在 json 中提供会话 ID,而是重定向到其他页面并将会话 ID 作为 cookie 提供。

网站所有者建议我这样做:

• 配置您的客户端不遵循重定向 - 只需获取 url • 如果它让您停留在当前页面,则表示登录失败 • 如果您被重定向到 main/index,您已正确通过身份验证,您可以保留 cookie 以供进一步请求

 var webRequest = (HttpWebRequest)WebRequest.Create("https:\URL");
        webRequest.UserAgent =
            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36";
        webRequest.Method = "POST";
        webRequest.Timeout = 60000;
        webRequest.AllowAutoRedirect = true;
        webRequest.CookieContainer = new CookieContainer();

        webRequest.ContentType = "application/x-www-form-urlencoded";

        webRequest.ContentLength = data.Length;

        using (var stream = webRequest.GetRequestStream())
        {
            stream.Write(data, 0, data.Length);
        }

        var response = (HttpWebResponse)webRequest.GetResponse();
        var test = response.ResponseUri;

当我尝试将 AllowAutoRedirect 设置为 false 时,我没有得到重定向 url,但得到了 cookie。如果我尝试将 AllowAutoRedirect 设置为 true,那么我将获得重定向的 url,但不会获得 cookie。如果我将 AllowAutoRedirect 保持为 false 我如何确定登录成功并且我获得了正确的会话 ID 作为 cookie?

我想通了。

如果我们将 AllowAutoRedirect 设置为 false,则响应将添加一个 header 作为位置,其中将包含重定向的 url。我在该位置得到了重定向的 url,在这种情况下,http 响应应该是 302.