我注意到一个奇怪的警告信息,当使用谷歌chrome检查器(F12)查看下载的资源:
注意显示临时标题
我发现一些可能相关的东西,网络面板:添加临时请求头的警告,但我不能完全理解它。相关问题可以发现Chrome块请求以及XMLHttpRequest无法加载。未加载的资源显示警告:显示临时标头。
与第一个问题类似,我的资源被阻塞了,但后来自动加载了相同的资源。不像第二个问题,我不想解决任何问题;我想知道这条信息是什么意思以及我为什么收到它。
我注意到一个奇怪的警告信息,当使用谷歌chrome检查器(F12)查看下载的资源:
注意显示临时标题
我发现一些可能相关的东西,网络面板:添加临时请求头的警告,但我不能完全理解它。相关问题可以发现Chrome块请求以及XMLHttpRequest无法加载。未加载的资源显示警告:显示临时标头。
与第一个问题类似,我的资源被阻塞了,但后来自动加载了相同的资源。不像第二个问题,我不想解决任何问题;我想知道这条信息是什么意思以及我为什么收到它。
当前回答
我遇到了这个问题,我设法确定了一个具体的原因,这在答案或问题中都没有提到。
我在SSL上运行一个完整的js堆栈,angular前端和节点后端,API在8081端口上运行的不同域上,所以我在做CORS请求和withCredentials,因为我正在从API中删除会话cookie
所以我的具体场景是:POST请求,带有凭据到端口8081导致“警告:临时头显示”消息在检查器中,当然也阻止了请求。
我的解决方案是设置apache代理将请求从通常的SSL端口443传递到节点的SSL端口8081(节点必须在更高的端口上,因为它不能在prod中以root身份运行)。所以我猜Chrome不喜欢SSL请求非常规的SSL端口,但也许他们的错误消息可以更具体。
其他回答
这种情况(仅针对跨源请求)也可能发生,因为有一种名为站点隔离的新功能
本页详细介绍了问题和解决方案。也就是去chrome://flags/#site-isolation-trial-opt-out,把这个设置改为“Opt-out”,然后重新加载chrome。
这是一个众所周知的问题。然而,该页面说它在chrome 68中是固定的,但我正在运行chrome 68,我仍然有这个问题。
I've had this come up very recently (today in fact) where I've had an AJAX call go out to the server and Chrome fires off the "Caution: Provisional headers are shown." In the server side PHP scripting, there are MySQL queries that can be pretty much instant or take a few seconds depending on the given scenario. My server response isn't sent back to the browser until the queries are completed. I've found I get this error only when time consuming queries (up to a few seconds total) are being done and prevent the response from being sent back.
我的场景涉及到一个非常罕见的可能性,即必须通过添加/删除数百个天气模型输出列来更改一个表……因此,迭代ALTER TABLE查询循环会导致响应延迟。
资源可能被一个扩展阻塞(在我的情况下是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编码了。
对于chrome v72+什么为我解决了它只是这个:
转到chrome://flags/并禁用这3个标志
禁用站点隔离 启用网络服务 运行进程内网络服务
或者你可以从命令行执行:
chrome --disable-site-isolation-trials --disable-features=NetworkService,NetworkServiceInProcess
为什么会发生这种情况?
谷歌似乎正在将他们的Chromium引擎重构为模块化结构,其中不同的服务将被分离为独立的模块和进程。他们把这个过程称为服务化。网络服务是第一步,接下来是Ui服务、身份服务和设备服务。谷歌提供Chromium项目站点的官方信息。
改变这一点危险吗?
一个例子是网络:一旦我们有了一个网络服务,我们可以选择在进程外运行以获得更好的稳定性/安全性,或者在资源受限时在进程内运行。源