奇怪的是,我试图阅读很多不同网站的<Head>部分,并且一个特定types的服务器Apache有时会给代码403禁止。 并不是所有的Apache服务器都这样做,所以它可能是一个configuration设置或特定版本的服务器。
当我然后用networking浏览器(例如Firefox)检查url时,页面加载正常。 代码sorta看起来像这样:
var client = new WebClient(); var stream = client.OpenRead(new Uri("http://en.wikipedia.org/wiki/Barack_Obama"));
通常情况下,403是一个访问权限失败的事情,但这些通常是不安全的页面。 我在想,Apache正在过滤请求标头中的某些内容,因为我不打算创build任何内容。
也许对Apache有更多了解的人可以给我一些关于头文件中缺less的东西的想法。 我想保持尽可能小的标题,以最大限度地减less带宽。
谢谢
尝试设置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);
我有一个类似的问题,下面的设置解决了它
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)";
这可能是UserAgent标题的问题,正如“thedugas”所说的,或者实际上是浏览器默认配置的任何事情。 例如,这可能是不使用浏览器正在使用的代理服务器,或者不使用代理服务器的正确凭据。 这些东西可能已经配置到浏览器,所以你不知道他们需要完成。