【问题标题】:Application Cache manifest file errors with Windows/NTLM authenticationWindows/NTLM 身份验证的应用程序缓存清单文件错误
【发布时间】:2012-03-26 09:08:33
【问题描述】:

浏览器如何实现对应用程序缓存清单文件的请求,它与请求其他文件的方式有什么不同?

我问是因为我看到在 IIS 7 中使用 Windows/NTLM 身份验证时不会出现的行为。情况是​​我有一个定义了清单文件的站点。使用匿名身份验证,一切都按预期工作——站点加载并可以脱机使用。

当我禁用匿名并启用 Windows 身份验证时,网站将在身份验证后正常加载,但我会在控制台(在 Chrome 或 iPad 2 上)中看到一个错误,指出无法获取清单文件。

在 iPad 上,错误是无法获取应用程序缓存文件。在 Chrome 中,具体错误是“应用程序缓存错误事件:清单提取失败 (401)”。在这两个实例中,我都可以在 Web 服务器日志中看到 401 响应代码。

为什么这种行为似乎出乎意料的是对所有其他资源(CSS、JavaScript、图像)的请求都按预期工作。此外,我可以浏览到我的 .appcache 文件并加载它。

谁能解释这是怎么回事?

有没有其他人遇到过这个问题并找到了解决方案?

【问题讨论】:

  • 在 Apache 上也遇到了同样的问题,我通过 .htaccess 为包含应用程序的目录打开了 HTTP 基本身份验证。在请求应用缓存清单时,Chrome 似乎没有将 Authorization 标头与凭据一起传递。

标签: windows-authentication offline-caching cache-manifest html5-appcache


【解决方案1】:

我也遇到过这个问题。正如您所描述的那样,但我在 Apache 上使用基本身份验证。我将尝试公开 mainfest 文件。

【讨论】:

    【解决方案2】:

    不确定这是否仍然相关,但我也遇到了这个问题。

    当我的网站发出 AJAX 请求时,一旦页面加载完毕,我就会被要求提供凭据以使请求发生。一旦发生这种情况,运行 applicationCache.update() 会导致应用程序缓存正确更新。

    因此,作为一种变通方法,或许可以尝试向某事物发出 AJAX 请求,以便提示用户输入凭据,然后调用 applicationCache.update()

    【讨论】:

      【解决方案3】:

      我知道这是一个老问题,但我遇到了完全相同的问题,导致我来到这里。

      我的设置是:
      服务器 - IIS8
      身份验证 - windows
      匿名身份验证 - 启用(这样做是为了让我的动态清单被获取而不管身份验证,然后我必须用 [Authorize] 装饰所有其他控制器)

      通过上述设置,应用程序将正确缓存,但是当从缓存加载时,如果清单有更新,某些部分没有获取(例如授权内容),因为用户没有“登录”并因此进行了整个更新甚至失败。

      我的解决方案是向授权资源添加 ajax 调用,这样当用户在线时,他们会被提示登录,这意味着下次更新缓存时,他们会再次获得授权。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-03
        • 2010-11-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多