>我正在尝试调用一个 api auth 方法,该方法不提供 json 中的会话 ID,而是重定向到其他页面并将会话 ID 作为 cookie 提供。
以下是网站所有者建议我做的事情:
• 将客户端配置为不遵循重定向 - 只需获取 URL•如果它使您停留在当前页面,则表示登录失败•如果您被重定向到主/索引,您将正确进行身份验证,并且可以保留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。如果我尝试使用允许自动重定向为真,那么我得到了重定向的网址,但没有得到cookie。如果我将允许自动重定向保留为 false 如何确定登录成功并且我获得了正确的会话 ID 作为 cookie?
我想通了。
如果我们将 AllowAutoRedirect 设置为 false,则响应将添加一个包含重定向 url 的标头作为位置。我在该位置得到了重定向的 url,在这种情况下,http 响应应该是 302。