【问题标题】:.net HTTP POST Method cookies disabled.net HTTP POST 方法 cookie 已禁用
【发布时间】:2013-02-27 19:55:31
【问题描述】:

我正在尝试使用 POST 和 C#(或 VB)登录到一个站点(不能提供 URL,它只是 Intranet)。 我收到以下错误:

此系统需要使用 HTTP cookie 来验证授权 信息。我们的系统检测到您的浏览器已禁用 HTTP cookie,或者不支持它们。请参考帮助页面 在您的浏览器中获取有关如何正确配置的更多信息 用于此系统的浏览器。

我使用以下代码:

var cookies = new CookieContainer();
ServicePointManager.Expect100Continue = false;

var request = (HttpWebRequest)WebRequest.Create("http://.......");
request.CookieContainer = cookies;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
using (var requestStream = request.GetRequestStream())
using (var writer = new StreamWriter(requestStream))
{
    writer.Write("user=XX&pass=XX");
}

using (var responseStream = request.GetResponse().GetResponseStream())
using (var reader = new StreamReader(responseStream))
{
    var result = reader.ReadToEnd();
    Console.WriteLine(result);
}

我该如何解决这个问题?

【问题讨论】:

标签: .net http post cookies


【解决方案1】:

我该如何解决这个问题?

通过查看合法流量并从代码中重放该流量。我的猜测:登录页面设置了一个 cookie 和/或一个隐藏的表单值,您必须将两者之一或两者都发布到登录页面。

所以:启动Fiddler,用浏览器请求登录页面,登录,确认上述理论并从代码重建:

  1. 获取附加了 CookieContainer 的登录表单
  2. 读取登录表单并存储隐藏值(如果需要)
  3. 使用 1 中的 CookieContainer 和 2 中的表单字段执行 POST
  4. ???
  5. 利润

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 2011-10-21
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 2021-02-16
    相关资源
    最近更新 更多