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

时间:2017-03-27 07:35:36

标签: c# api http httpwebrequest httpwebresponse

我试图调用api auth方法,该方法不会在json中提供会话ID,而是重定向到其他页面并将会话ID作为cookie提供。

以下是网站所有者建议我做的事情:

•将您的客户配置为不遵循重定向 - 只需获取网址即可 •如果它使您保持在当前页面中,则表示登录失败 •如果您被重定向到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时,我没有获得重定向的网址,但获得了cookie。如果我尝试将AllowAutoRedirect设置为true,那么我将获得重定向的URL,但不会获取cookie。如果我将AllowAutoRedirect保持为false我如何确保登录成功并且我将正确的会话ID作为cookie?

1 个答案:

答案 0 :(得分:0)

我明白了。

如果我们将AllowAutoRedirect设置为false,则响应将添加一个标题作为包含重定向网址的位置。我在该位置获得了重定向的URL,在这种情况下,http响应应为302。