GET请求缓存问题及解决方案

匿名 (未验证) 提交于 2019-12-02 23:52:01

一、遇到的问题

最近在项目中遇到一个问题:由公司内网访问系统执行某一操作时,浏览器正确发送请求(服务端代码有打印日志),但使用公司外网执行形同操作,服务端未打印日志(请求并未到达服务端),浏览器却显示已发送请求,且返回了数据(但数据中的业务数据为空)。

初步判断应该是与外网有关,于是找到运维人员帮忙在服务器上抓包,结果发现外网的请求并未到达服务端,看来该问题应该是前端原因导致。

查看前端发起请求的代码,发现该请求是GET请求,查找资料后才知道:原来GET请求在有些浏览器中会缓存,再次请求时,浏览器不会发送请求,而是使用上次请求获取到的结果。

二、jQuery解决方案如下:

 $.ajax({       url: '/outer/cert/extension/getLatestCertOperInfo',       type: 'get',       dataType: 'json',       async: false,       cache: false,       success: function (data) {        } });

将cache设置为false。它的工作原理是在GET请求参数中附加时间戳"_={timestamp}"

注:也曾看到通过随机数形式解决Ajax中的缓存问题的方案,但是这种解决方案并不是特别可靠。因为随机数也有相同的情况。

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