jQuery.ajax()异步方法的漏洞

岁酱吖の 提交于 2019-12-04 21:55:27

        在使用jQuery.ajax()异步方法的时候发现一个返回数据混合的漏洞,记录下来分享给大家。

        最近在做一个数据统计分析的项目,由于网页需要加载多个数据统计的表格,而且查询数据统计表格的方法比较耗时。所以在网页的初始化加载中调用了多个jQuery.ajax()的异步请求方法,分别请求不同的数据统计表格的数据。

        经过多次的调试,发现如果使用同步调用的话能够实现效果(界面需要等待,加载慢),但是异步调用却总是实现不了想要的效果。后来发现jQuery.ajax()的error返回结果中,两次请求的数据混合到了一起。

        项目使用SpringMVC框架,通过response返回结果,在chrome 55和IE 11中使用得到相同的结果。

        Java后台的调用:

        jQuery.ajax()的异步调用:

        A方法和B方法分别为两个比较耗时的后台方法,页面加载时使用两个jQuery.ajax()异步请求方法,方法回调error输出后台返回数据。

        可以发现在前端控制台输出的结果中,一个前端返回为“两个后台方法返回数据的混合”,而另一个返回为空。再看后台Java中,两个后台方法使用的request和response的HashCode是相同的。也就是说,即使前端的写法是发起两个不同的异步请求,但是实际上只发起了一个request请求。所以调用的两个后台方法返回结果都会放到同一个response中。

        而 jQuery.ajax()同步请求方法是发起两个不同的request请求的。

 

        以上是开发过程中发现的问题,如果测试、结论有不严谨的地方,请指出。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!