【问题标题】:Chrome basic auth and digest auth issueChrome 基本身份验证和摘要身份验证问题
【发布时间】:2013-05-16 08:51:15
【问题描述】:

我在 Chrome 取消一些 HTTP 请求时遇到了一些问题,我怀疑缓存的身份验证数据是原因。让我先写下我正在编写的应用程序的一些重要因素。

  1. 一段时间以来,我一直在使用 基本身份验证 方案来保护我的网络应用中的多个服务和资源。
  2. 与此同时,我使用 Chrome 大量使用/测试该应用程序,并且我的主 Google 帐户已完全同步。大多数情况下,我使用我的名字 - “lukasz” - 作为 Basic Auth 中的用户名。
  3. 最近我已将我的应用程序切换为使用摘要式身份验证
  4. 现在,我发出的一些 HTTP 请求在没有明显原因的情况下以 status=failed 失败。只有当我使用用户“lukasz”时才会发生这种情况,如果我输入其他唯一的用户名 - 没有问题。

我到处查看后端和前端,但找不到问题出在我们的代码中。每次我都可以使用用户“lukasz”轻松重现这一点。所以我将我的代码恢复为基本身份验证(而不涉及应用程序的其余部分),问题就消失了。

这让我认为缓存密码有问题。所以我清除了 Chrome 中的缓存,但这并没有帮助。经过几个小时的分析后,我决定确保我正在运行新的 Chrome 实例,因此我重新安装了它(沿途删除了磁盘数据)。 太棒了!问题消失了,我无法再重现。 然后我将我的 Google 帐户与这个新安装的 Chrome 同步,不久之后对我的应用的请求再次开始失败!!因此,我对此进行了更深入的研究(从磁盘中清除配置文件数据并重做所有步骤),确实看起来问题在我的帐户与云同步后就开始了!

是的,我知道这听起来很狡猾。听起来很荒谬。听起来很愚蠢。但我几乎可以肯定这两个问题在某种程度上是相关的(请求失败和帐户同步)。

我的想法是这样的:Chrome 不知何故记得我在某些服务中使用了带有 Basic Auth 的“lukasz/my-pass”。在我切换到 Digest Auth 之后,相同的凭据组合(lukasz/my-pass)现在表现得很有趣。也许在底层 Chrome 仍然认为这是 Basic Auth 并在得知其他情况时取消请求?

更新: 我用chrome://net-internals/ 做了一些低级调试,看来问题出在读取缓存条目时。这似乎证明了我最初的假设。 我做了一些调查,发现this article。显然,总是在我的 http 响应中添加“Last-Modified”标头已经解决了 Chrome 中的问题(我在 FF 中仍然遇到一些问题,但这是题外话)。 但是,它仍然不能完全解决我的问题。为什么请求一开始就失败了?

【问题讨论】:

    标签: google-chrome authentication basic-authentication digest-authentication


    【解决方案1】:

    您可以尝试使用隐身模式,看看会发生什么。它可能会给您一些提示,而无需清除缓存或重新安装 Chrome。

    也可以看看How to clear basic authentication details in chrome

    【讨论】:

    • 隐身模式的行为相同。
    • 铬有一个命令行开关来选择身份验证方案。这可能有助于测试。 --auth-schemes :要启用的 HTTP 身份验证方案。这是一个以逗号分隔的身份验证方案列表(基本、摘要、ntlm 和协商)。默认情况下,所有方案都已启用。此命令行标志的主要用途是帮助对最终用户报告的与身份验证相关的问题进行分类。
    • 是的,我试过了。什么也没有变。我在这个参数中只使用了摘要选项,以确保始终选择正确的方案。
    猜你喜欢
    • 2013-06-30
    • 2011-01-28
    • 1970-01-01
    • 2015-07-22
    • 2013-08-29
    • 1970-01-01
    • 2021-10-10
    • 2018-12-20
    • 2021-05-17
    相关资源
    最近更新 更多