Bootstrap

ajax post 请求 报错 caution : provisional headers are shown


今天dmap更新部署后,在qa的jpaas测试环境出现如下问题:

执行批量删除任务时: 


浏览器 没收到任何返回。 直接就悲催了。

但实际上 从业务和数据库来看,后台 是执行了,而且执行 成功了。 后台打印的日志  一切正常。



在qa测试环境可以复现,但偶尔也不会出现。    本地开发环境无法复现。


联系OP排查 tomcat日志 等一系列,从tomcat日志看 ,后台tomcat 访问日志 的确是HTTP 200 成功。

故可以判定后台 收到请求,并且成功处理,返回给前面了。


一筹莫展之际,考虑到是否可以用 rest client 模拟http请求,看下后台服务到底是否正常。

最后在qq群里请教其他前端人员。 有位同学 google 一下 “ provisional headers are shown”,找到如下网页“ http://stackoverflow.com/questions/21177387/caution-provisional-headers-are-shown-in-chrome-debugger”


故怀疑是 前端 在    ajax返回前 就刷新了页面 或者 跳转到 其他页面去了。

这一下启发了我,因为这次 上线,前端fe 的确做了更改。

故我开始排查 js代码问题,发现了ajax 他设置了 timeout属性 为10s。

至此 真相大白,就是 因为这个 请求后台处理比较耗时,ajax在等待 10s 发现 后台 还未返回,就自动断开了连接。 

故出现奇怪问题。



解决办法:  

方法1 : 将ajax请求改成 同步。

方法2: 去掉 timeout属性的设置。


思考: 有时考虑问题 不能局限于 常规场景,要发散。 可能你以为 不可能出现问题的 地方 就在哪儿。  真有可能 是其他人挖的坑~



悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;