我有一些问题,Chrome取消了一些HTTP请求,我怀疑缓存的身份验证数据是原因。让我首先写下一些关于我正在编写的应用程序的重要因素。
status=failed
没有明显的原因。它只发生在我使用用户“lukasz”时,如果我输入其他一些唯一的用户名 - 没有问题。我在后端和前端到处查看,我找不到问题在我们的代码中。我每次都可以通过用户“lukasz”轻松地重现这一点。所以我将我的代码恢复为Basic Auth(虽然没有触及应用程序的其余部分)但问题已经消失。
这让我觉得缓存密码有问题。所以我清除了Chrome中的缓存,但这没有帮助。经过几个小时的分析后,我决定确保我正在运行新的Chrome实例,所以我重新安装了它(沿途删除了磁盘数据)。 TADAAA!问题消失了,我再也无法重现了。然后我将我的Google帐户与新安装的Chrome同步,过了一会儿,我的应用程序的请求又开始失败!所以我深入研究了这一点(清理磁盘中的配置文件数据并重做所有步骤),事实上,只要我的帐户与云同步,问题就会出现!
是的,我知道这听起来很狡猾。这听起来很荒谬。这听起来很愚蠢。但我几乎可以肯定,这两个问题在某种程度上是相关的(请求失败和帐户同步)。
我的想法是这样的:Chrome以某种方式记得我使用“lukasz / my-pass”与Basic Auth进行某些服务。在我切换到Digest Auth后,相同的凭证组合(lukasz / my-pass)现在表现得很有趣。也许在引擎盖下,Chrome仍然认为这是Basic Auth并在其他情况下取消请求时取消请求?
更新:我已经使用chrome://net-internals/
进行了一些低级调试,看起来问题出在读取缓存条目时。这似乎证明了我最初的假设。我做了一些调查,发现了this article。显然总是在我的http响应中添加“Last-Modified”标题已经解决了Chrome中的问题(我在FF中仍然存在一些问题,但这不是主题)。但是,它仍然没有完全解决我的问题。为什么请求首先失败了?
您可以尝试使用隐身模式,看看会发生什么。它可能会为您提供一些提示,而无需清除缓存或重新安装Chrome。