具体场景描述:
工具描述:
项目开发使用的是SSM框架,开发工具为eclipse IDE2019-03,测试工具为基础浏览器,如QQ、火狐、谷歌等,创作web系统,在前端使用url传值(类似这种http://****?id=110&name=adminmenu)。传值时出现Provisional headers are shown警告
错误场景
跳转页面链接:http://localhost:8080/SuperCMS/SuperApi/menuinfo?id=110&name=adminmenu,在我的项目逻辑中是需要先执行/SuperCMS/SuperApi/menuinfo方法进行取值,然后将执行/SuperCMS/SuperApi/menuinfodata,
第一次页面跳转,/SuperCMS/SuperApi/menuinfo取值成功,在ecplise中的console如下信息
然后刷新再次点击相同url后,后台的/SuperCMS/SuperApi/menuinfo没有执行,便直接进行/SuperCMS/SuperApi/menuinfodata方法,截图如下
刷新浏览器,清除缓存都是在点击几次后url传值便无法执行/SuperCMS/SuperApi/menuinfo方法!
在java后台的/SuperCMS/SuperApi/menuinfo方法如下
//java 后台通过url进行传值的基本内容
@RequestMapping(value="/menuinfo")
public String menuinfo(@RequestParam(defaultValue="") Integer id,
@RequestParam(defaultValue="") String name)
{
System.out.println("这是跳转到更改的页面,使用的是'/SuperCMS/PowerCon/powerinfo?id=100?name=menu'-------"+id+"-------"+name);
}
错误原因
经过几番查找,在前端的Network中找到原因,在后台成功执行/SuperCMS/SuperApi/menuinfo方法接收到值的network都长这样
Request Headers没有错误信息
前台点击后后台没有执行/SuperCMS/SuperApi/menuinfo方法的network如下
发现在前端的status Code =200,请求应该是正常的,但是后台的/SuperCMS/SuperApi/menuinfo方法没有执行,查看我的/SuperCMS/SuperApi/menuinfo方法,应该不存在返回没有结束的问题,那就是可以理解为多次Request 导致浏览器拥堵!url传值时没有进行传递!找到错误原因!!!!
然后就百度了以下这种情况,发现做web项目的同学遇到这种情况的还很多,错误原因都一样
是因为浏览器第一次发送这个请求,请求被阻塞,未收到响应。当要求浏览器再次发送这个请求时,上个同样的请求都还没有收到响应,浏览器就会报这个警告
解决方案
我的解决方案就是在url后面加上一个挡墙时间戳,让浏览器无法感知到这是上次的那个请求
具体就是直接将http://localhost:8080/SuperCMS/SuperApi/menuinfo?id=**&name=**
改为