应用程序缓存清单文件错误与Windows / NTLM身份验证

时间:2012-03-08 21:27:50

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

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

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

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

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

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

有人可以解释发生了什么吗?

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

3 个答案:

答案 0 :(得分:1)

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

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

因此,作为一种解决方法,可能尝试向某些内容发出AJAX请求,以便提示用户输入凭据,然后调用applicationCache.update()

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

我的设置是:
服务器 - IIS8
身份验证 - 窗口
匿名身份验证 - 启用(这样做,所以我可以获取我的动态清单,无论身份验证,我必须用[Authorize]装饰所有其他控制器)
通过上面的设置,应用程序将正确缓存,但是当从缓存加载时,如果清单有更新某些部分未获取(例如授权内容),因为用户没有“登录”并因此进行整个更新甚至失败。

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