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

注意显示临时标题

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

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


当前回答

当托管在HTTPS上的网站调用托管在HTTP上的WebApi时,可以显示“警告:临时头部显示”消息。你可以检查所有Api是否都是HTTPS。浏览器阻止对不安全资源的调用。当使用FETCH API对HTTP进行域划分时,您可以在代码中看到类似的消息。

混合内容:“https://website.com”的页面通过HTTPS加载,但请求了一个不安全的资源“http://webapi.com”。此请求已被阻止;内容必须通过HTTPS提供。

其他回答

当我试图在弹出窗口中打印页面时,我得到了这个错误。打印对话框显示,它仍然在弹出窗口中等待我的接受或取消打印,而在母版页也在后台等待,显示消息警告临时标题显示时,我试图单击另一个链接。

对我来说,解决办法就是把窗户拆了。print ();它在弹出窗口的<body>上执行的脚本,以防止打印对话框。

资源可能被一个扩展阻塞(在我的情况下是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/2推送资源将产生临时头显示在检查器中,与@wvega在上面的回答中发布的理论相同。

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

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

这是另一个解决方案。

如果您在使用$ajax()调用时遇到此问题,请在您的serverhost解决问题之前添加http://。

var requestURL = "http://" + serverHost;
$.ajax({
    dataType: "json",
    url: requestURL,
    data: data,
    success: success    
});

当使用一些包(如webpack-hot-middleware)并同时打开多个页面时,也会出现此问题。Webpack-hot-middleware将为每个页面创建一个连接,用于侦听代码的更改,然后刷新页面。每个浏览器都有每个服务器最大连接数限制,对于Chrome来说是6个,所以如果你已经在Chrome中打开了超过6个页面,新的请求将一直挂在那里,直到你关闭一些页面。