"小心:Chrome调试器中显示了临时标题"

Sal*_*ali 383 google-chrome http http-headers google-chrome-devtools

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

注意临时标题显示

在此输入图像描述

我找到了可能相关的东西,网络面板:添加关于临时请求标题的警告,但我无法完全理解它.可以找到相关问题Chrome块请求以及XMLHttpRequest无法加载.卸载的资源显示警告:显示临时标头.

与第一个问题类似,我的资源被阻止,但后来自动加载了相同的资源.与第二个问题不同,我不想解决任何问题; 我想知道这条消息的含义以及收到它的原因.

Wil*_*ega 334

资源可能被扩展程序阻止(在我的情况下是AdBlock).

消息就在那里,因为从未进行过检索该资源的请求,因此显示的标题不是真实的.正如您引用的问题中所述,实际标头在服务器响应时会更新,但如果请求被阻止则没有响应.


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

  • 输入chrome://net-export/在地址栏并回车.
  • 打开显示问题的页面.
  • 返回net-internals,单击事件(###)并使用文本字段查找与您的资源相关的事件(使用URL的部分).
  • 最后,点击该事件,看看显示的信息是否告诉您一些事情.

  • Shazz的答案更好.每当从浏览器的缓存中检索资源时,您都会在调试器中看到此消息,而不会询问服务器内容是否已更改. (7认同)
  • 我认为两个答案都是正确的,他们告诉同一个故事的两个方面.当阻止请求或从缓存加载资源时,以及在每个请求启动后以及浏览器等待服务器响应时,都会显示该消息.一旦响应到达,消息就会消失,并显示真实的标题. (4认同)
  • 如果重定向了最初分析的页面,例如example.com/a-> 301-> example.com/b,并且目标页面的回答为200,然后在检查器中单击目标页面/ b以查看标头数据,您将获得它们,并标有“已显示临时标题”。正确,因为您没有直接分析目标页面。如果这样做,则将获得不带标签的标题数据。 (2认同)

小智 106

我相信在没有发送实际请求时会发生这种情况.通常在加载缓存资源时发生.

  • 不,304未经修改来自服务器以响应条件请求.如果要加载缓存资源并且浏览器不必联系服务器,则根本不会获得304未修改或任何HTTP状态,因为不会发出HTTP请求. (61认同)
  • 这对我有用,当我在调试器面板中看到"显示临时标题"时,请求的状态代码为"200 OK(来自缓存)" (7认同)
  • 我在开发工具中关闭了缓存,但仍然收到此消息。所有文件的状态为200,没有“(来自缓存)”。因此,有时可能是由于缓存,但并非总是如此。 (4认同)
  • 我通过服务工作者响应看到了这一点,所以我认为至少在某些情况下,你对缓存响应是正确的:) (3认同)

Bad*_*ers 40

对于chrome v72 +,为我解决的仅是:

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

  • 禁用站点隔离
  • 启用网络服务
  • 在运行网络服务

在此处输入图片说明

或者您可以从命令行执行此操作:

chrome --disable-site-isolation-trials --disable-features=NetworkService,NetworkServiceInProcess
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

Google似乎将其Chromium引擎重构为模块化结构,其中不同的服务将分为独立的模块和流程。他们称此过程为服务化。网络服务是第一步,即将推出Ui服务,身份服务和设备服务。Google在Chromium项目站点上提供了官方信息。

改变它有危险吗?

网络就是一个例子:一旦有了网络服务,我们可以选择将其运行在进程外以提高稳定性/安全性,如果资源有限也可以在进程内运行资源

  • 我能够使它仅与“启用网络服务”和“在运行中运行网络服务”一起使用。 (4认同)
  • 这可以在常规的Chrome(v74)中使用,但是最新版本的Chrome Canary(v76)现在缺少“#network-service”标志...如果没有它,就无法在Canary中使用。 (3认同)

Mis*_*r P 23

我遇到了这个问题,我设法确定了一个具体的原因,上面没有在答案或问题中提到.

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

具体来说,我的方案是:POST请求,withCredentials到端口8081导致检查器中出现"小心:显示临时标题"消息,当然也阻止了所有请求.

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

  • 那就是浏览器的同源策略-您的网页和您正在阅读的资源必须在同一端口上。https://developer.mozilla.org/zh-CN/docs/Web/Security/Same-origin_policy (2认同)

onl*_*one 16

由于称为站点隔离的新功能,这种情况也可能发生(仅针对跨域请求)

此页面详细介绍了该问题和解决方法。要chrome://flags/#site-isolation-trial-opt-out在Chrome浏览器中将其更改为“退出”,然后重新加载Chrome浏览器。

这是一个已知问题。但是该页面说它已在chrome 68中修复,但是我正在运行chrome 68,但仍然有问题。


小智 11

HTTP/2推送资源Provisional headers are shown在检查员中产生与@wvega在上面的答案中发布的理论相同的理论.

例如:由于服务器将资源推送到客户端(在客户端请求它们之前),浏览器将缓存资源,因此客户端永远不会发出/需要请求; 因为......

...当服务器响应时,真实的标题会更新,但如果请求被阻止,则没有响应.


Ale*_*xee 11

我的情况与跨性别相关.
情况:浏览器OPTIONS在发送真实请求之前发送请求,如GETPOST.后端开发人员忘记处理OPTIONS请求,让它通过服务代码,使处理时间过长.比我在axios初始化时写的超时设置长,这是5000毫秒.因此,无法发送实际请求,然后我遇到了provisional headers are shown问题.
解决方案:当涉及到OPTIONS请求时,后端api只返回结果,它使请求更快,真实请求可以在超时之前发送.


小智 6

我怀疑我的答案是及时帮助你,但其他人可能会觉得它有帮助.我在创建的jQuery Ajax Post脚本中遇到了类似的问题.

事实证明我在A标签的href属性中有一个拼写错误,我用它来发布帖子.我输入了href =" javacsript :;" (反转's'和'c')..这导致脚本在帖子试图触发时尝试刷新页面.纠正错字,它对我来说非常好.


dio*_*ziz 6

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