昨天晚上写“Firefox 1.5发现之旅:火狐图像创作基础<Canvas>介绍2 - 绘制基本图形”时,一直在写,写到最后提交文章发送到服务器的时候,发现服务器不通(估计是电信调整网络基础架构,暂时关闭了服务器所在机房出口的链路,TNND,电信也不打个招呼就做了,太没有服务意识了),页面提交失败,显示打开网页失败,想返回上页,又因为服务器不能连接,返回不了,那么写了一堆的东西就这么丢失了吗?是否有什么拯救的方法呢?
因为页面数据提交到后台前,其数据是保存在浏览器内存中的,在提交数据的时候,是将其作为HTTP内容发送给后台的,所以当提交页面失败的时候,会有提示“存在过期数据,是否重新发送”,既然这样的话,只要我们捕抓到浏览器向后台发送的HTTP连接的信息,将数据从其中取出来就可以了。
这里有一个很好用的抓取HTTP连接数据的开源工具:proxyTrace,这是个开源免费的TCP数据步骤工具,启动该工具会在本地开一个代理端口,然后将您的浏览器设置代理为本机的对应proxyTrace的监听端口,这样所以的浏览器发送和接收数据包都会被捕抓到,自然我们需要的数据页就在HTTP头中取得出来了。
值得注意的是,数据发送到后台是经过URL编码的,所以要后去真正我们的原始数据需要经过URL编码转换,JAVA中可以直接使用URLDecoder.decode()直接转换就可以了。
下次,哪个朋友碰到和我一样的情况,也可以使用这样的方法,免得咱们的辛苦劳动白白丢失…
O comments at "页面提交失败,不可返回时未保存数据的拯救方法"
Comment Now!