外贸 网站推广计划,宁波网络公司排行榜,如何做服装微商城网站建设,浦口国家建设部网站说明#xff1a;前段时间做的一个项目莫名的返回403的错误#xff0c;这种情况也多大是程序员最不喜欢的了#xff0c;没办法先来分析一下错误信息。之前的代码如下#xff1a; WebClient webclient new WebClient();string u9Str webclient.DownloadString(http:/…说明前段时间做的一个项目莫名的返回403的错误这种情况也多大是程序员最不喜欢的了没办法先来分析一下错误信息。之前的代码如下 WebClient webclient new WebClient();string u9Str webclient.DownloadString(http://www.uuu9.com/); 很简单的请求返回string信息的代码最诧异的是这个返回 “远程服务器返回错误: (403) 已禁止。”的错误还是间歇性的报错的几率很小但是肯定存在因为查看错误日志让我找到了这个bug.
解决方案
1.根据以往的经验推测403错误的原因分析。
2.既然是模拟访问那么真实的访问是哪些东东呢访问参数对比。
实施
1.一般造成403原因是权限设置问题也就是说可能没有权限造成的那么访问的时候加上信任权限即可。
代码webclient.Credentials CredentialCache.DefaultCredentials; // 添加授权证书
2.真实请求的信息截图 下面引用一段请求标头参数代表含义的信息
Accept浏览器可接受的MIME类型。
Accept-Charset浏览器可接受的字符集。
Accept-Encoding浏览器能够进行解码的数据编码方式比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。
Accept-Language浏览器所希望的语言种类当服务器能够提供一种以上的语言版本时要用到。 Authorization授权信息通常出现在对服务器发送的WWW-Authenticate头的应答中。
Connection表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”或者看到请求使用的是HTTP 1.1HTTP 1.1默认进行持久连接它就可以利用持久连接的优点当页面包含多个元素时例如Applet图片显著地减少下载所需要的时间。要实现这一点Servlet需要在应答中发送一个Content-Length头最简单的实现方法是先把内容写入ByteArrayOutputStream然后在正式写出内容之前计算它的大小。
Content-Length表示请求消息正文的长度。
Cookie这是最重要的请求头信息之一
From请求发送者的email地址由一些特殊的Web客户程序使用浏览器不会用到它。
Host初始URL中的主机和端口。
If-Modified-Since只有当所请求的内容在指定的日期之后又经过修改才返回它否则返回304“Not Modified”应答。
Pragma指定“no-cache”值表示服务器必须返回一个刷新后的文档即使它是代理服务器而且已经有了页面的本地拷贝。
Referer包含一个URL用户从该URL代表的页面出发访问当前请求的页面。
User-Agent浏览器类型如果Servlet返回的内容与浏览器类型有关则该值非常有用。
UA-PixelsUA-ColorUA-OSUA-CPU由某些版本的IE浏览器所发送的非标准的请求头表示屏幕大小、颜色深度、操作系统和CPU类型。
每个标头独占一行 最后必须要有一个空行。有关HTTP头完整、详细的说明请参见http://www.w3.org/Protocols/的HTTP规范。
看来以上的对照觉得有用的就是2个信息需要设置Host和User-Agent需要设置如下
webclient.Headers.Add(User-Agent, Microsoft Internet Explorer);
webclient.Headers.Add(Host, www.uuu9.com); 总结完整代码如下 WebClient webclient new WebClient();string u9Str webclient.DownloadString(http://www.uuu9.com/);// 以下为解决方案webclient.Credentials CredentialCache.DefaultCredentials; // 添加授权证书webclient.Headers.Add(User-Agent, Microsoft Internet Explorer);webclient.Headers.Add(Host, www.uuu9.com); 如果对您有用请点击支持谢谢。