昨天通过HttpClient访问一个网站的时候,响应提示403的错误:
An invalid request was received from your browser. This may be caused by a malfunctioning proxy server or browser privacy software. Required header \'Accept\' missing
这样的提示是因为header中少了必须的Accept头,我访问了不少其它的网站,倒没有出现在这样的问题,原来只是传了User-Agent这个请求头:
headers.add(new Header("User-Agent", "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Ubuntu/10.04 Chromium/8.0.552.224 Chrome/8.0.552.224 Safari/534.10"));
将请求头补充上Accept,完整的请求头如下:
headers.add(new Header("User-Agent", "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Ubuntu/10.04 Chromium/8.0.552.224 Chrome/8.0.552.224 Safari/534.10"));
headers.add(new Header("Accept", "application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"));
headers.add(new Header("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3"));
headers.add(new Header("Accept-Encoding", "gzip,deflate,sdch"));
headers.add(new Header("Accept-Language", "en-US,en;q=0.8"));
headers.add(new Header("Cache-Control", "max-age=0"));
这样就可以正常访问了,没有传COOKIE,这个是不需要登陆的,没有必要的。
本文出自:冯立彬的博客