现在的位置: 首页 > 综合 > 正文

Jsp登录后数据采集—奇怪的Apache服务器

2012年09月27日 ⁄ 综合 ⁄ 共 880字 ⁄ 字号 评论关闭

 有个Jsp制作的站点有需要登录后才可以获取一些信息,一般网站,Asp,ASPX,都是通过Cookie或Session(使用Cookie做标志)保持登录状态,因此先访问登录页获取Cookie,再将Cookie附加到请求中,获取目标页即可, 结果昨天在那个Jsp站点中搞了一个下午无果,POST登录页是成功的,也返回了Seesion信息(如下) ,在设置request.AllowAutoRedirect = false;后可以正确的获取到JSESSIONID,但是把这个JSESSIONID附加到新的请求(需要采集的页面时),服务器始终返回500错误!,
 郁闷中反复观察标头信息.
//==============登后返回的标头信息
HTTP/1.1 302 Moved Temporarily
Set-Cookie: JSESSIONID=A8E7B16C1786F6E3D40457CF4258C4C2; Path=/ScoreTable
Location: http://xxx.com:8080/xxx.jsp
Content-Type: text/html;charset=GBK
Content-Length: 0
Date: Thu, 19 Feb 2009 03:07:28 GMT
Server: Apache-Coyote/1.1
//======================
信息中的Location时重定向命令产生的,这个在使用IE时会把页面先定位到 http://xxx.com:8080/xxx.jsp,不过现在使用程序访问应该在获取cookie后可以忽略,直接访问目标页即可(至少在asp,aspx这样的环境中是没问题的)....
最后无奈在程序完成cookie获取后先访问一次http://xxx.com:8080/xxx.jsp,再访问目标页面,结果奇迹出现,数据获取成功,当然2个请求都附加上获取的session标志.
   具体原因不知道,推测是Apache服务器的特殊性引起了,它也许会针对某个Session(一个会话)检测Location命令有没有被正确执行, 最后望有达人指点!

抱歉!评论已关闭.