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