在Chromedebugging器中“小心:显示临时标题”

使用Google Chrome检查器(F12)查看下载的资源时,我注意到一个奇怪的警告消息:

警告临时标题显示

在这里输入图像描述

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

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

资源可能被阻止的扩展名(在我的情况下AdBlock)。

消息在那里,因为检索资源的请求从来没有做过,所以显示的头文件不是真实的东西。 正如您引用的问题中所解释的那样,服务器响应时会更新真正的标头,但如果请求被阻止,则不会有任何响应。


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

  • 在地址栏inputchrome://net-internals ,然后回车。
  • 打开显示问题的页面。
  • 回到networking内部,点击事件(###)并使用文本字段查找与您的资源相关的事件(使用URL的一部分)。
  • 最后,点击该事件,看看显示的信息是否告诉你什么。

我相信这发生在实际的请求没有发送。 通常在加载caching资源时发生。

我遇到了这个问题,我设法确定了一个具体的原因,这在答案和问题中都没有提到。

我在SSL上运行一个完整的js堆栈,angular度前端和节点后端,并且API在端口8081上运行的不同域上,所以我正在执行CORS请求和withCredentials,因为我从API中删除会话cookie

所以特别是我的scheme是:POST请求,带端口8081的端口导致在检查器中的“注意:临时头被显示”消息,当然也一起阻止了请求。

我的解决scheme是设置Apache代理将来自通常SSL端口443的请求传递给8081的节点SSL端口(节点必须位于更高的端口上,因为它不能以root身份运行)。 所以我猜Chrome不喜欢SSL非常规SSL端口的请求,但也许他们的错误信息可能更具体。

我怀疑我的答案是及时帮助你,但其他人可能会发现它有帮助。 我遇到了与我创build的jQuery Ajax Post脚本类似的问题。

事实certificate,我的A标签的href属性中有一个拼写错误,我正在使用它来触发该post。 我input了href =“ javacsript:; ” (反转“s”和“c”)。这导致脚本尝试刷新页面,而post试图发射。 纠正了错字,它对我来说工作得很好。

HTTP / 2推送的资源将产生Provisional headers are shown在检查员的理论相同@wvega在他的回答上面发表 。

例如:由于服务器将资源推送到客户端( 在客户端请求之前 ),因此浏览器具有caching的资源,因此客户端永远不需要请求; 所以…

…服务器响应时会更新真正的标头,但如果请求被阻止,则不会有任何响应。

我遇到了一个AJAX调用,永远不会完成这个问题。 我遵循wvega的build议,并提示使用chrome://net-internals进行debugging,以最终确定页面中的另一个click事件处理程序,正在侦听父节点,导致浏览器导航到相同的URL(所以它不容易显)。

解决scheme是在表单提交button的click处理程序中添加event.stopPropagation() ,以防止点击冒泡DOM并取消正在进行的AJAX请求(通过form上的submit处理程序启动)。

我最近有这个问题(今天事实上),我把AJAX调用发送到服务器,Chrome浏览器closures了“警告:显示临时头文件”。 在服务器端PHP脚本中,根据给定的场景,MySQL查询可能非常快,也可能需要几秒钟的时间。 在查询完成之前,我的服务器响应不会发送回浏览器。 我发现只有在耗时的查询(最多几秒钟)完成时才会出现这个错误,并且阻止了回复。

我的场景涉及非常罕见的可能性,通过添加/删除天气模型输出的数百个列来更改表格…因此,响应滞后于通过循环ALTER TABLE查询的迭代。

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

如果响应无效并因此被浏览器丢弃,则也会出现此警告消息。

在我的情况下,请求被正确地发送到服务器,然后服务器端代码产生一个错误,我的自定义error handling返回HTTP状态消息字段中的错误消息。 但是由于错误消息中的无效字符(在这里描述http://aspnetwebstack.codeplex.com/workitem/1386 )导致了损坏的响应标头,所以在客户端没有收到这个错误。

我碰到这个,当我从https切换到http时,它就消失了。 我们在开发中使用的SSL证书未经第三方validation。 他们只是本地生成的开发证书。

在Chrome Canary和Firefox中,相同的调用工作得很好。 这些浏览器似乎没有Chrome那样严格的SSL证书。 使用“CAUTION:临时标题…”消息的电话会在Chrome中失败。

我想/希望当我们在阶段和产品中使用合法的SSL证书时,我们不会再在Chrome中看到这种行为。

当我在第二次尝试加载main.js到require js时,我遇到了这个问题。 我只是在开发工具设置“禁用caching(DevTools打开时)”中打开。 那做了魅力。

我见过的另一个可能的场景 – 完全相同的请求正在几毫秒后再次发送(很可能是由于客户端的一个错误)。
在这种情况下,您还会看到第一个请求的状态为“取消”,延迟时间仅为几毫秒。

这发生在我身上,当我有一个下载链接,点击它之后,我也试图用jquery捕捉点击并发送一个ajax请求。 问题是因为当你点击下载链接时,你将离开页面,即使看起来不是这样。 如果没有文件传输,你会看到请求的页面。所以我设置了一个目标=“_ blank”来防止这个问题。

当我尝试在popup窗口中打印页面时出现此错误。 打印对话框显示,它仍然等待我的接受或取消在popup的打印,而在母版页也在后台等待显示消息当我试图点击另一个链接时显示临时标题

在我的情况下,解决scheme是删除window.print (); 脚本,它在popup窗口的<body>上执行,以防止打印对话框。

发生这种情况的一个常见原因是,如果您正在跟踪一个事件,并且您不阻止默认操作。 例如,如果您有点击事件,那么您将需要包括:

 e.preventDefault(); 

要么

 return false; 

如果您不这样做,您将在Web控制台的“networking”选项卡上看到临时标题警告以及“取消”状态。

在我的情况下,这只是一个错误的设置path(svg / img)

当使用HSTS保护网站时,可能会发生此消息。 然后,当有人链接到URL的HTTP版本时,按照HSTS的指示,浏览器不会发出HTTP请求,而是在内部redirect到HTTPS资源。 这是为了避免HTTPS降级攻击,如sslstrip 。

当与我的服务器的连接数超过Chrome的每服务器的最大连接数限制为6时,我看到了这种情况。

只要投入我的两分钱。 我正在使用CORS请求和完整的RESTful Web服务编写Web应用程序。 我发现铬会抛出这个错误,当我有一个不讨好的例外或抛出一个PHP错误。 只要发生其他人遇到问题。 我发现,当发生这种情况时,我可以启动Chrome应用程序“Postman – Rest客户端”,并运行完全相同的请求,但在Chrome应用程序中,我将实际得到PHP错误,而不是这个非描述性错误。

这是另一个解决scheme。

如果您遇到$ ajax()调用的这个问题,请在您的服务器主机解决您的问题之前添加http://

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

如果您正在开发一个Asp.Net Mvc应用程序,并且您试图在控制器中返回一个JsonResult ,请确保将JsonRequestBehavior.AllowGet添加到Json方法。 这为我修好了。

 public JsonResult GetTaskSubCategories(int id) { var subcategs = FindSubCategories(id); return Json(subcategs, JsonRequestBehavior.AllowGet); //<-- Notice it has two parameters } 

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

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

我与我的MEAN应用程序有类似的问题。 就我而言,这个问题只发生在一个请求中。 我尝试删除adblock,尝试清除caching,并尝试不同的浏览器。 没有帮助。

最后,我发现api试图返回一个巨大的JSON对象。 当我试图发送一个小对象,它工作正常。 最后,我改变了我的实现,返回一个缓冲区而不是JSON。

我希望在这种情况下expression出错误。

清除浏览器历史logging中的caching数据对我有用。

使用你的代码的这个代码拳头:

 header('Cache-Control: no-cache, no-store, must-revalidate'); header('Pragma: no-cache'); header('Expires: 0'); 

这对我有用。