Chrome请求出现Provisional headers are shown的几次经历

问题:谷歌浏览器抓包获得:header:status:(canceled)    Type:xhr

答案:表单的submit和ajax冲突

Chrome请求出现"Provisional headers are shown":

项目中遇到个好几次,分别介绍一下不同的场景:

1. 所有的客户端的浏览器访问时都一直出现Provisional headers are shown的情况:

处理方式: 检查该请求触发的页面,查看是否有 表单提交 和 ajax请求同时触发的情况,

例如:定义了一个按钮,type是submit,另外又给该按钮定义了一个ajax事件;

这种场景是我们以前开发过程中出现的一种情况


2. 部分客户端的浏览器出现

处理方式:调用chrome的  chrome://net-internals/#events ,然后重新触发一下请求,然后查看出现 Provisional headers are shown 的请求的日志;

扫描二维码关注公众号,回复: 2137333 查看本文章

查看是否存在 delegate_blocked_by 的关键字;这种一般是由于浏览器端的插件或客户端的软件对请求进行了拦截;我们出现的情况,是被 websense endpoint拦截;

如果是这种情况,基本上可以忽略啦,客户端自身的问题啦;可以考虑将插件或软件卸载后,重新尝试,看是否还出现;如果还出现,请看是否属于以下的情况


3. 所有的客户端都随机偶尔出现过这种错误,如果是这种情况,往往是属于服务器端的问题

 处理方式: 基于部署架构来进行排查;例如:我们的部署架构中 关键的几个流程是 nginx----> 网关应用----> F5负载均衡----> 应用服务器(docker)

可以进行层层排查,简单的方式是直接服务器shell命令 写一个for循环 curl请求,先调用最下层的应用服务器(如果怕压力不够,可以多线程去压);依次往上去压;在压测的过程中,可以实时的去看,是否会出现请求卡住的情况;如果发现,很大的可能行就是这一层的问题:


目前我们遇到的情况有两块,一个是F5层面,部分请求未成功负载均衡到应用服务器;还有一种情况是nginx层面出现的卡住的情况;

处理方案:F5层面的负载均衡策略 从 performance L4改成了standard; 

nginx层面卡住的情况处理方案:这种情况没有实际去参与过,了解的情况是修改了nginx的很多配置都没有效果,最后直接干掉重装就好啦,所以也没有找到关键点


button按钮 影响了ajax的回调函数

<!--     <button class="login-btn" style=" "  onclick="return zhuce()">注册 </button>    -->
        <input class="login-btn" type="button"  style="height:4.5rem; color:#fff"onclick="return zhuce()" value="注册"/>

这是两种完全不同的写法,button按钮依然可以提交表单

如果form标签上写上了提交的地址,那么不管你是否采用了ajax,点击这个按钮的时候都会把这个表单的信息进行提交

button按钮上面加上了ajax的事件,那么他的执行顺序是:  先执行ajax,触发里面的事件,走完以后接着走button的按钮提交表单参数

最后看到的页面效果,是表单提交以后的效果,会把返回值直接写到页面上

 

去掉了from中的action配置,依然没有达到想要的结果,页面确实不在跳转,但是没有触发ajax的回调函数,成功和失败的都没有执行

原因在于:触发ajax的按钮点击事件,采用的是button 按钮而不是  type="button"


猜你喜欢

转载自blog.csdn.net/swy18929564409/article/details/81001119