我注意到一个奇怪的警告信息,当使用谷歌chrome检查器(F12)查看下载的资源:

注意显示临时标题

我发现一些可能相关的东西,网络面板:添加临时请求头的警告,但我不能完全理解它。相关问题可以发现Chrome块请求以及XMLHttpRequest无法加载。未加载的资源显示警告:显示临时标头。

与第一个问题类似,我的资源被阻塞了,但后来自动加载了相同的资源。不像第二个问题,我不想解决任何问题;我想知道这条信息是什么意思以及我为什么收到它。


当前回答

HTTP/2推送资源将产生临时头显示在检查器中,与@wvega在上面的回答中发布的理论相同。

例:由于服务器将资源推送到客户端(在客户端请求它们之前),浏览器已经缓存了这些资源,因此客户端从不发出/需要请求;所以因为…

...当服务器响应时更新真实的头,但是如果请求被阻塞,则没有响应。

其他回答

尝试用ctrl + shift +F5重新加载页面,然后再次检查请求头

没有显示完整的头文件,因为有可能请求没有发送到服务器,而是直接从浏览器的缓存(例如使用service worker)提供服务

对于chrome v72+什么为我解决了它只是这个:

转到chrome://flags/并禁用这3个标志

禁用站点隔离 启用网络服务 运行进程内网络服务

或者你可以从命令行执行:

chrome --disable-site-isolation-trials --disable-features=NetworkService,NetworkServiceInProcess

为什么会发生这种情况?

谷歌似乎正在将他们的Chromium引擎重构为模块化结构,其中不同的服务将被分离为独立的模块和进程。他们把这个过程称为服务化。网络服务是第一步,接下来是Ui服务、身份服务和设备服务。谷歌提供Chromium项目站点的官方信息。

改变这一点危险吗?

一个例子是网络:一旦我们有了一个网络服务,我们可以选择在进程外运行以获得更好的稳定性/安全性,或者在资源受限时在进程内运行。源

只是说说我的意见。我正在使用CORS请求和一个完全RESTful的Web服务编写一个Web应用程序。我发现chrome会抛出这个错误时,我有一个无手异常或PHP错误抛出。以防其他人遇到同样的问题。我发现当这种情况发生时,我可以启动Chrome应用程序“邮差-休息客户端”,并运行完全相同的请求,但在Chrome应用程序中,我实际上会得到被抛出的PHP错误,而不是这种非描述性错误。

资源可能被一个扩展阻塞(在我的情况下是AdBlock)。

该消息之所以存在,是因为从未发出检索该资源的请求,因此显示的标头并不是真正的标头。正如在您引用的问题中所解释的那样,服务器响应时更新真实的头,但如果请求被阻塞,则没有响应。


我发现的方式是通过Chrome中的net-internals工具扩展阻止了我的资源:

chrome的最新版本

在地址栏中输入chrome://net-export/,然后按enter键。 开始录音。并保存录音文件到本地。 打开显示问题的页面。 回到net-internals 您可以查看“记录日志”文件https://netlog-viewer.appspot.com/#import 点击events(###),然后使用文本框找到与你的资源相关的事件(使用部分URL)。 最后,单击事件,看看所显示的信息是否告诉了你一些东西。

chrome的旧版本

在地址栏中输入chrome://net-internals并按enter键。 打开显示问题的页面。 返回net-internals,单击events(###),并使用文本字段查找与您的资源相关的事件(使用URL的一部分)。 最后,单击事件,看看所显示的信息是否告诉了你一些东西。

当我发送无效的HTTP授权报头时,发生了这个问题。我忘记用base64编码了。