无法从重定向响应中获取 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.
我正在尝试调用 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.