科普 httpClient 403 Forbidden (JAVA方向分析)

来源:互联网 发布:python 列表嵌套元组 编辑:程序博客网 时间:2024/05/17 07:37

Forbidden的意思就是被禁止的,就是说你没有权限访问此站。

访问时出现403 Forbidden错误的原因如下,我举例两种视角来看待此原因,具体问题要自行排查。

视角一(详细描述 太麻烦了 就写这么多吧 懒)

1.你的IP被列入黑名单
2.你在一定时间内过多地访问此网站(一般是用采集程序),被防火墙拒绝访问了
3.网站域名解析到了空间,但空间未绑定此域名
4.你的网页脚本文件在当前目录下没有执行权限
5.在不允许写/创建文件的目录中执行了创建/写文件操作
6.以http方式访问需要ssl连接的网址
7.浏览器不支持SSL 128时访问SSL 128的连接
8.连接的用户过多,可以过后再试
9.在身份验证的过程中输入了错误的密码

视角二

0访问被拒绝
1执行访问被拒绝
2读取访问被拒绝
3写入访问被拒绝
4 需要使用 SSL 查看该资源
5需要使用 SSL 128 查看该资源
6客户端的 IP 地址被拒绝
7需要 SSL 客户端证书
8客户端的 DNS 名称被拒绝
9太多客户端试图连接到 Web 服务器
10Web 服务器配置为拒绝执行访问
11密码已更改
12服务器证书映射器拒绝了客户端证书访问
13客户端证书已在 Web 服务器上吊销
14在 Web 服务器上已拒绝目录列表
15Web 服务器已超过客户端访问许可证限制
16客户端证书格式错误或未被 Web 服务器信任
17客户端证书已经到期或者尚未生效
18无法在当前应用程序池中执行请求的URL
19无法在该应用程序池中为客户端执行CGI
20Passport 登录失败

结合实例讲讲吧,我最近在准备httpClient的教程,准备期间,做了一些常见的异常,比如httpClient访问网页出现403 Forbidden错误提示。

常识告诉我将问题锁定在Http头字段的问题上。

如果你对这个不太了解,部分常识不晓得的话,可以使用HttpWatch 检测浏览器的头字段设置,去找寻可能存在问题。

我遇到的是请求头问题,先介绍下浏览器User-Agent的格式:

"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:0.9.4)"

解决方法如下,加行代码,然后就可以正常访问了,自此我的问题解决了。

HttpGet.setHeader("User-Agent",“Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:0.9.4)”);

(注:HttpUriRequest类是HttpGet 和 HttpPost的父类,此处带吗也可以写为
HttpUriRequest.setHeader("User-Agent",“Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:0.9.4)”);

另外,User-Agent字段做一些统计信息的提交,只要遵从特定格式即可,可以根据自己的需要添加特定字段。

还有一种常见的情况,就是服务器限制了浏览器的referer,即不允许用户的地址直接访问该地址。

这是因为某些网站做了盗链的限制,仅限于本网站链接导入的网址才可以访问,解决办法是执行网页访问前,设置一个假的referer。关键代码如下:

    HttpClient httpclient=new DefaultHttpClient();    HttpGet httpGet=new HttpGet("http://...");    httpGet.setHeader("Referer","http://...");    httpclient.execute(httpGet);

httpClient 很牛的,里面的道道很多,大家要多记多积累啊。


—–下面有个“顶”字,你懂得O(∩_∩)O哈哈~
—–乐于分享,共同进步!
—–更多文章请看:http://blog.csdn.net/duruiqi_fx


4 0