前言

请求里面provisional headers are shown(显示临时报头) 出现的情况很多,但原因是多样的。
如果你去直接匹配关键字搜索,得到的结果可能与你自己的情况大相径庭。
网上大部分都是在跨域时出现,或者是请求被插件拦截,但关于缓存时的请求很少。
我在上文查看缓存的时候发现了这个问题,当时查找资料都是聚焦于请求被拦截,
所以本文就简单整理一下相关情况。

问题描述

当刷新页面时,想要查看http请求header中相关信息时,
发现使用缓存的请求(from disk cache或者from memory cache)header相关信息不能查看

第一次看到确实有点疑惑,那么就去搜索了下。
碰到这个提示的情况挺多,但细看下与我们的场景不太符合。

基本上遇到的都是provisional headers are shown,阻止了请求的正常加载。
而我们只是在使用缓存的时候遇到,而看起来请求没有被block掉。好像不太符合。

问题定位

虽然没有看到匹配度十分相关的信息,但看到了有启发的一篇文章(详情点击)

摘抄部分如下:

The resource could be being blocked by an extension (AdBlock in my case).
The message is there because the request to retrieve that resource was never made, so the headers being shown are not the real thing. As explained in the issue you referenced, the real headers are updated when the server responds, but there is no response if the request was blocked.

资源可能被一些扩展程序拦截 。

另外还有一句:

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

真正请求并未被发送,当使用缓存时经常发生。

之所以会出现这个信息是因为获取相关资源的请求并没有发出,
所以headers被展示并不是真正的信息。
就像提到的那样,真正的header只有在服务端返回的时候会更新。
当请求被拦截后,并没有返回。
基于这个情况开始猜测原因所在:

猜测一、请求跨域被拦截

虽然现在网站的静态资源都会存在专门的静态域名下面,和html域名可能不一致。
但是基本都是基于CORS来解决这个问题,所以不存在这个问题。
再有就是,我们这种情况首次请求的时候不会发生,如果有跨域,应该都被block。
另外如果是被拦截,那么请求应该不会被响应的,我们这里显然得到了正确的响应。
这种被排除。

猜测二、服务器未及时响应

这种猜测和一差不多,特定情况下才会出现,跟服务器关联不大。

猜测三、被扩展程序拦截

作为一个开发人员,大家的chrome上肯定装了不少的插件。这种原因还是有可能的。
我们可以通过 chrome://net-internals 来根据关键字查找相关请求,
然后具体去看相关状态。
例如我们http://xxdy.tech/css/main.css?v=5.1.4请求

可以看到并没有出现block,timeout等字段,只能看到比较明显的DISK_CACHE。
因此这种情况也不满足,我们应该是和本地缓存强烈相关的。

本地缓存

结合上面的分析,我们可以缩小到缓存上面。冲着这个目标,我们继续去看下相关资料。
最后在一篇日文资料里找到了相关解释。
似乎只从缓存中获得的通信显示为“显示临时标题”(或“执行”)
因为该文件是从缓存中获取的,并且未进行通信
所以详细标头并不会显示。

原因:未与服务端正确通信

回过头来看,前面提到的那么多情况其实都是与服务器没有进行或者完成正确的通信,所以只展示临时信息。

常见状况

provisional headers are shown出现的情况有这么几种:

  1. 跨域,请求被浏览器拦截
  2. 请求被浏览器插件拦截
  3. 服务器出错或者超时,没有真正的返回
  4. 强缓存from disk cache或者from memory cache,此时也不会显示

结束语

到这里provisional headers are shown相关总结就结束了,本身并不是一个问题,但在自身不了解的情况下还是要去研究一下,不然永远是个问题。本文抛砖引玉,给自己一个总结,同时希望能给有需要人一些帮助。

参考文章

https://stackoverflow.com/questions/21177387/caution-provisional-headers-are-shown-in-chrome-debugger
https://did2memo.net/2017/01/23/chrome-devtools-provisional-headers-are-shown/
http://www.techfolks.net/provisional-headers-are-shown-in-google-chrome-browser-debugger/

 

【转】provisional headers are shown 知多少的更多相关文章

  1. provisional headers are shown 知多少

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

  2. 请求头出现Provisional headers are shown

    provisional headers are shown 知多少:https://juejin.im/post/5c00980751882518805add83 请求头出现Provisional h ...

  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. chrome "Provisional headers are shown"

    我的问题的,每次打开浏览器,点开有视频的页面(云平台的存储),然后当视频还没有加载完,就马上关闭,连续操作很多次(测试的暴力测试把),F12查看就有很多很多在加载中的连接,因为连续点击太多次了,第一个 ...

  6. 使用laravel-admin后台sdk报错Failed to load resource: net::ERR_CERT_AUTHORITY_INVALID、Provisional headers are shown

    报错Failed to load resource: net::ERR_CERT_AUTHORITY_INVALID请先确定自己的资源url是否可以确实访问到(地址正确与否.访问权限是否开启等) 若n ...

  7. nginx Provisional headers are shown

    项目用的Nginx做的代理,重启电脑后,重启项目和Nginx 浏览器报 Provisional headers are shown  解决: host文件添加: 127.0.0.1   cleaner ...

  8. 解决provisional headers are shown的过程

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

  9. Provisional headers are shown

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

随机推荐

  1. Vue 项目中的ESlint语法报错问题

    在项目中的""和;经常会报错,真的很纠结,今天看到一个解决方法,可以不用卸载删除 在项目根目录中,新建一个.prettierrc文件,来移除分号,和替换为单引号. { " ...

  2. 常见问题:计算机网络/完整HTTP访问

    域名解析 以浏览器进行HTTP访问为例,首先搜索自身DNS缓存(一般缓存1000条左右,仅缓存1分钟),若有且未过期,结束. 若未找到,则搜索操作系统的DNS缓存. 若未找到,尝试读取hosts文件. ...

  3. Andrew Ng机器学习课程9

    Andrew Ng机器学习课程9 首先以一个工匠为例,说明要成为一个出色的工匠,就需要掌握各种工具的使用,才能知道在具体的任务中选择什么工具来做.所以今天要讲的就是机器学习的理论部分. bias va ...

  4. C#调试C++DLL库

    C#调试C++DLL库 https://blog.csdn.net/gggg_ggg/article/details/51086089 对于托管代码调用非托管DLL文件,已经是非常普遍的事情,下面写一 ...

  5. 洛谷 题解 P1041 【传染病控制】

    [思路] 题目给出一棵树.第\(i\)步拆的一定是第\(i\)层与第\(i+1\)层之间的连边,否则不是最优(自行证明即可),所以可以暴力枚举每一次拆哪一个节点与上一个节点的连边. 把所有节点所在的层 ...

  6. 兔子问题(Rabbit problem)

    Description 有一种兔子,出生后一个月就可以长大,然后再过一个月一对长大的兔子就可以生育一对小兔子且以后每个月都能生育一对.现在,我们有一对刚出生的这种兔子,那么,n 个月过后,我们会有多少 ...

  7. STM32之串口硬件连接图

    笔记本USB转串口实物连接图: 电路连接图:

  8. poj 3061 题解(尺取法|二分

    题意 $ T $ 组数据,每组数据给一个长度 $ N $ 的序列,要求一段连续的子序列的和大于 $ S $,问子序列最小长度为多少. 输入样例 2 10 15 5 1 3 5 10 7 4 9 2 8 ...

  9. python爬取盘搜的有效链接

    因为盘搜搜索出来的链接有很多已经失效了,影响找数据的效率,因此想到了用爬虫来过滤出有效的链接,顺便练练手~ 这是本次爬取的目标网址http://www.pansou.com,首先先搜索个python, ...

  10. 2、C语言实现通讯录

    main函数入口: //test.c #include<stdio.h> #include<stdlib.h> #include<string.h> #includ ...