为了账号安全,请及时绑定邮箱和手机立即绑定

浏览器发送了两次请求给服务器,服务器只返回后一次请求的内容

浏览器发送了两次请求给服务器,服务器只返回后一次请求的内容

智慧大石 2019-03-20 18:14:47
浏览器调用同一个接口,发送了两次请求给服务器端,服务器端代码返回一个随机数给浏览器框架是SpringMvc+Spring+MyBatis服务器端代码如下:@RequestMapping(value = "/test")@ResponseBodypublic Result test(){     result.setSuccess(true);     result.setData(new Random().nextDouble() + System.currentTimeMillis());    return result; }chorme的network截图如下,发现两次请求返回的内容是同一个请求一请求二有以下几个疑问:经过多次试验,发现请求是都走到Controller里,但是第一次请求的响应数据没有马上返回给浏览器端,而是和第二次请求的响应一起返回给了前端,并且第一次请求的响应内容居然是第二次响应的内容。有时候两次请求的响应能不相同,有时候却相同,不知道是什么原因。分割线1不少朋友说是因为我发的get请求,导致浏览器认为是缓存原因。我的实际应用场景是,前台上传多个附件,但是本质是多次上传,然后由后台返回此文件在数据库中的文件id。然后我发现有时上传多个文件时,返回的文件id都是同一个。如下图所示:两个上传的文件长度是不一样的文件一文件二但是服务器返回的文件id却是一样的:文件一文件二
查看完整描述

7 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

浏览器请求的url后面加上防止缓存的时间戳试试


查看完整回答
反对 回复 2019-04-23
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

看了下评论,有可能就是那种情况,你看下响应码是多少,304的话就和上次相同。因为请求的url一样,所以浏览器使用的缓存数据,你可以在请求中加个随机参数(时间戳),保证每次的url不一致。


查看完整回答
反对 回复 2019-04-23
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

看下spring mvc controller的日志 看请求到达服务器的时间是否是同一毫秒


查看完整回答
反对 回复 2019-04-23
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

服务端,把请求的URL路径参数打印到控制台看看,应该两次请求打印到服务端是一模一样的,所以服务端当一个请求处理掉了。上面的System.nanoTime();方法可以都试试看。


查看完整回答
反对 回复 2019-04-23
?
慕少森

TA贡献2019条经验 获得超9个赞

遇到相同的问题,求解答.......,时间间隔很近的两次请求,第一次没返回,第二次一次性返回了所有结果。(路径相同,但参数值不同)


查看完整回答
反对 回复 2019-04-23
  • 7 回答
  • 0 关注
  • 1014 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信