chrome "Provisional headers are shown"

原创 2016年08月31日 08:22:50
        我的问题的,每次打开浏览器,点开有视频的页面(云平台的存储),然后当视频还没有加载完,就马上关闭,连续操作很多次(测试的暴力测试把),F12查看就有很多很多在加载中的连接,因为连续点击太多次了,第一个还没有加载完。后面的视频就无法加载出来了,并提示“Provisional headers are shown”,我的做法是页面先加载出来,然后不预先加载视频,等用户点击的时候再开始加载视频(将video标签新增属性 preload="none"),这样就不会出现这种情况。 

        可以参考下面文章有助于分析解决问题:http://blog.xinshangshangxin.com/2015/04/20/%E8%A7%A3%E5%86%B3provisional-headers-are-shown%E7%9A%84%E8%BF%87%E7%A8%8B/

前言

学习Angular时写了一个音乐播放器
oschina地址
github地址
为了兼容android chrome,参考了这篇文章;

在数据读取中要中断的时候,可以把audio.src设为null,并显式调用audio.load(),
此时对于Android会中断数据读取,并且canplay也不会发生

所以在我的代码中也如此使用了

1
2
_audio.src = null;
_audio.load();

但是由于百度有些音乐无法直接播放;需要服务器转发,所以音乐链接带上了服务器转发地址

问题出现

在前面几首歌上带上转发没有问题;但是当列表循环后;就出现了无法从服务器上获取音乐内容了;
查看chrome控制台,链接上显示 Provisional headers are shown

errorerror

关闭标签;重新打开网址;音乐有又可以加载了!!!

尝试过程

刚开始以为是因为本地环境的问题;将代码挂在到服务器上,依然有问题
开始谷歌搜索 Provisional headers are shown, 在这篇文章中http://segmentfault.com/q/1010000000364871

之所以会出现这个警告,是因为去获取该资源的请求其实并(还)没有真的发生,所以 Header 里显示的是伪信息,直到服务器真的有响应返回,这里的 Header 信息才会被更新为真实的。不过这一切也可能不会发生,因为该请求可能会被屏蔽。比如说 AdBlock 什么的,当然了不全是浏览器扩展,具体情况具体分析了

但是我测试的浏览器只有开发工具,没有 AdBlock之类的;所以pass

接着 有找到这篇文章https://code.google.com/p/chromium/issues/detail?id=327581

That is because websockets never report their requestHeadersText.
Fixed for the new implementation.

在新版本中修复… 我的chrome是42;所以 pass

接着在http://stackoverflow.com/questions/21177387/caution-provisional-headers-are-shown-in-chrome-debugger
发现推荐答案依然是 AdBlock等之类的拦截, 继续看回答, 说使用 chrome://net-internals; 玩了下,根本就不知道怎么玩,pass

解决

接着往下查看 发现有个回答

I believe it happens when the actual request is not sent. Usually happens when you are loading a cached resource.

回答内容是说请求没有被发送,因为是载入缓存资源.
一想很对啊,音乐资源默认是缓存的,但是设置不缓存会让音乐加载速度太慢;继续往下查看

Another possible scenario I’ve seen - the exact same request is being sent again just after few milliseconds (most likely due to a bug in the client side).
In that case you’ll also see that the status of the first request is “canceled” and that the latency is only several milliseconds.

大概是说 完全相同的请求间隔数毫秒(太短),导致加载失败,查看了chrome控制台发现

1
2
3
http://ngmusic.coding.io/null
http://ngmusic.coding.io/serverget?url=http%3A%2F%2Ffile.qianqian.com.....
都有 Provisional headers are shown

errorerror
errorerror

猜想是因为 http://...../null 加载失败 导致 http://..../serverget?url=http%3A%2F%2Ffile.qianqian.com.....的缓存请求也失败(阻塞)

故将上面 null 加载去掉

1
2
// _audio.src = null;
// _audio.load();

经过测试,发现的确从缓存中获取了~~~
errorerror

结论

Provisional headers are shown
出现在 载入缓存资源,请求没有被发送, 而如果上一个资源加载失败,可能导致从缓存加载的资源失败,
即缓存资源请求之前的请求不能失败,不然就有可能出现问题

至此,终于搞定了这个渣问题!!!!!!!!!!!!!!!!!!!!!!

参考文档


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

ajax post 请求 报错 caution : provisional headers are shown

今天dmap更新部署后,在qa的jpaas测试环境出现如下问题: 执行批量删除任务时:  浏览器 没收到任何返回。 直接就悲催了。 但实际上 从业务和数据库来看,后台 是执行了,而且...

由一个“两次请求”引出的Web服务器跨域请求访问问题的解决方案

我们公司的项目都是前后端分离的,上线几个月以来,发现一个很奇怪的问题,每次前端发起请求,通过浏览器的开发者工具都能看到在Network下同一个url有两条请求,第一条请求的Method为OPTIONS...

provisional headers are shown 原因分析

情景再现: 在发送http请求时,审查元素查看网络,有时会出现provisional headers are shown。与此同时,点击preview、response你都会发现是空的。 原因: ...

解决provisional headers are shown的过程

解决provisional headers are shown的过程

Chrome浏览器Network中,请求报provisional headers are shown 错误原因

情景再现: 在发送http请求时,审查元素查看网络,有时会出现provisional headers are shown。与此同时,点击preview、response你都会发现是空的。 ...

Provisional headers are shown 假请求原因分析

网上给出的原因大致有两个: 1、请求被屏蔽。可以被插件等屏蔽。 2、服务器端处理异常。 我个人的情况属于服务器端异常一类,是数据库表操作时,PL/SQL在对表进行编辑时的同时,页面也在提交这个表...

解决provisional headers are shown的过程

前言 学习Angular时写了一个音乐播放器 oschina地址 github地址 为了兼容android chrome,参考了这篇文章; 在数据读取中要中断的时候,可以把audio.s...

smtp/pop3/imap协议的理解

这三种协议,简单的说就是 smtp: 用来发送邮件的 pop3:用来接收邮件的。客户端操作不会同步到服务器端,操作的仅仅是客户端; imap:用来接收邮件的,客户端邮件的操作会同步到服务器,比如...

快速理解聚集索引和非聚集索引

数据库的索引,听起来挺神秘的,仔细想想。这些索引,其实就是平时咱们查东西时候常用的两种手段。无非就是为了提高我们找东西的效率而已。那么我们平时又是怎么查东西呢? 聚集索引:       聚集索引,来...

SpringMVC 上传文件出现 Provisional headers are shown 和 response 数据 无法输出问题

SpringMVC 上传文件出现 Provisional headers are shown 和 response 数据 无法输出,MaxUploadSizeExceededException异常
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)