我的问题的,每次打开浏览器,点开有视频的页面(云平台的存储),然后当视频还没有加载完,就马上关闭,连续操作很多次(测试的暴力测试把),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

error

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

尝试过程

刚开始以为是因为本地环境的问题;将代码挂在到服务器上,依然有问题

开始谷歌搜索 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

error

error

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

故将上面 null 加载去掉

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

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

error

结论

Provisional headers are shown

出现在 载入缓存资源,请求没有被发送, 而如果上一个资源加载失败,可能导致从缓存加载的资源失败,

即缓存资源请求之前的请求不能失败,不然就有可能出现问题

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

参考文档

chrome "Provisional headers are shown"的更多相关文章

  1. chrome Provisional headers are shown错误提示(转载)

    今天开发时遇到了一个问题,由于要做一个支付等待页,大概的意思就是点击支付之后,跳出来一个页面,告知用户正在跳转到支付页面.这个时候问题来了,指鹤要做的这个静态支付等待页中有图片,而为了要让这个静态页面 ...

  2. chrome Provisional headers are shown错误提示

    1.一般出现这个错误是请求没有发送成功 可能原因:在上传文件或ajax上传时指定的timeout,过时时间小 其他资料: http://www.duanzhihe.com/575.html http: ...

  3. nginx : server_name localhost 和 chrome : Provisional headers are shown

    问题相关问题现象:解决思路解决方案总结 问题相关 nginx : server_name localhost chrome : Provisional headers are shown 问题现象: ...

  4. Chrome 里的请求报错 "CAUTION: Provisional headers are shown" 是什么意思?

    在调试器中看到文件显示提示为 CAUTION: Provisional headers are shown, 可是直接复制链接访问资源却可以正常访问, 最后发现是https 问题,资源采用ssl协议, ...

  5. provisional headers are shown 知多少

    前言 请求里面provisional headers are shown(显示临时报头) 出现的情况很多,但原因是多样的. 如果你去直接匹配关键字搜索,得到的结果可能与你自己的情况大相径庭. 网上大部 ...

  6. 解决provisional headers are shown的过程

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

  7. Provisional headers are shown

    问题: Chrome请求出现"Provisional headers are shown": 原因: 这种一般是由于浏览器端的插件或客户端的软件对请求进行了拦截:我们出现的情况,是 ...

  8. 【转】Provisional headers are shown

    在chrome开发者工具的 Network 面板中,某些请求头后面会跟着下面这行文字: Provisional headers are shown 这种请求实际上根本没有产生,对应的请求头当然也不应该 ...

  9. 关于post请求“CAUTION: Provisional headers are shown”【转】

    在POST请求中偶尔会出现"CAUTION: Provisional headers are shown" 这个警告的意思是说:请求的资源可能会被(扩展/或其它什么机制)屏蔽掉. ...

随机推荐

  1. Linux 管理软件

    公司的openfire先前运行在windows上的,但由于在windows上openfire内存机制问题,最多只能占用2GB内存,且时间稍微长久一些就会自动挂掉,用户无法登陆和连接,因此迁移到了Cen ...

  2. Docker 数据卷

    数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新,不会影响镜像 卷会一直存在,直到没有容 ...

  3. JVM初探- 内存分配、GC原理与垃圾收集器

    JVM初探- 内存分配.GC原理与垃圾收集器 标签 : JVM JVM内存的分配与回收大致可分为如下4个步骤: 何时分配 -> 怎样分配 -> 何时回收 -> 怎样回收. 除了在概念 ...

  4. 疯狂的Django 之深度外键跨表查找之疯狂INNER JOIN

    定义Model: from django.db import models class Moreinfo(models.Model): weight = models.FloatField() hei ...

  5. 实例演示如何在spring4.2.2中集成hibernate5.0.2并创建sessionFactory

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/49388209 文章作者:苏生米沿 本文目的:使用spring4.2.2集成hibern ...

  6. Mongo 整体架构介绍(1)-------分片集群

    摘要 在mongo初识文中介绍了mongo与cassandra的主要区别,以及mongo物理部署架构图.本文接着上一篇的mongo 架构图,来继续讲分片集群. 分片介绍 shard key mongo ...

  7. Android TV开发总结(三)构建一个TV app的焦点控制及遇到的坑

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52835829 前言:上篇中,&l ...

  8. 【安卓开发】Android为什么选择binder

    Binder (Android技术内幕): 在上面这些可供选择的方式中,Android使用得最多也最被认可的还是Binder机制. 为什么会选择Binder来作为进程之间的通信机制呢?因为Binder ...

  9. cocos2dx 3.2之Lua打飞机项目

    1          创建lua打飞机项目 cocos new T32Lua -dE:\Installed\cocos2d-x-3.2\cocos2d-x-3.2\projects -l lua 2 ...

  10. require.js使用步骤

    以superagent为例 1.设置lib目录 requirejs.config({ baseUrl: 'libs' }); 2. 使用SuperAgent require(['superagent' ...