provisional headers are shown 知多少

前言

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

问题描述

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

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

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

问题定位

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

摘抄部分以下:浏览器

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.
缓存

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

另外还有一句:app

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

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

之因此会出现这个信息是由于获取相关资源的请求并无发出,
因此headers被展现并非真正的信息。
就像提到的那样,真正的header只有在服务端返回的时候会更新。
当请求被拦截后,并无返回。
基于这个状况开始猜想缘由所在:

猜想1、请求跨域被拦截

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

猜想2、服务器未及时响应

这种猜想和一差很少,特定状况下才会出现,跟服务器关联不大。

猜想3、被扩展程序拦截

做为一个开发人员,你们的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/

相关文章
相关标签/搜索