代码之家  ›  专栏  ›  技术社区  ›  Grant BlahaErath

system.net.webclient请求被403禁止,但浏览器不支持Apache服务器

  •  5
  • Grant BlahaErath  · 技术社区  · 15 年前

    奇怪的是,我正在尝试阅读许多不同网站的“head”部分,而Apache是一种特殊类型的服务器,有时会禁止使用代码403。不是所有的Apache服务器都这样做,所以它可能是配置设置或服务器的特定版本。

    当我使用Web浏览器(例如,火狐)检查URL时,页面加载良好。代码排序如下:

    var client = new WebClient();
    var stream = client.OpenRead(new Uri("http://en.wikipedia.org/wiki/Barack_Obama"));
    

    通常,403是一种访问权限失败的类型,但这些页面通常是不安全的。我认为Apache正在过滤请求头中的某些内容,因为我不想创建任何内容。

    也许了解更多Apache的人可以给我一些关于头中缺少什么的想法。我希望尽可能地保持邮件头小,以最小化带宽。

    谢谢

    3 回复  |  直到 12 年前
        1
  •  10
  •   dugas    15 年前

    尝试设置useragent头:

    string _UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
    client.Headers.Add(HttpRequestHeader.UserAgent, _UserAgent);
    
        2
  •  4
  •   Seb Nilsson    12 年前

    我也遇到了类似的问题,下面的设置解决了它。

    Client.Headers["Accept"] = "application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
    Client.Headers["User-Agent"] ="Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC)";
    
        3
  •  1
  •   John Saunders    15 年前

    正如“thedugas”所说,这可能是用户代理头的问题,或者实际上是浏览器静默配置要做的任何事情。例如,可能是因为没有使用浏览器正在使用的代理服务器,或者没有使用代理服务器的正确凭据。这些可能已经在浏览器中配置,因此您不知道需要执行这些操作。