.net HTTP POST方法cookie被禁用

时间:2013-02-27 10:02:56

标签: .net http post cookies

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

  

此系统需要使用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);
}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

  

我该如何解决这个问题?

查看合法流量并从代码中重播。我的猜测:登录页面设置一个cookie和/或一个隐藏的表单值,其中一个或两个都必须POST到登录页面。

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

  1. 使用附加CookieContainer的GET登录表单
  2. 阅读登录表格并存储隐藏价值(如果需要)
  3. 从1开始使用CookieContainer进行POST,从2
  4. 进行表单字段
  5. ???
  6. 利润