应用程序缓存错误事件:清单提取失败(4)

时间:2014-12-12 10:51:25

标签: google-chrome html5-appcache cache-manifest application-cache manifest.cache

我正在尝试在我的应用程序中实现AppCache。我在IIS中添加了相应的MIME类型。请参阅下面的html标签

<html manifest="example.appcache">

我的清单看起来像:

CACHE MANIFEST

Content/img/logo-header.png 
Content/img/img-sprite.png
Content/img/icon-top-nav-sprite.png

NETWORK:
*

当我尝试执行我的应用程序时,我在Chrome控制台中收到以下错误

Creating Application Cache with manifest http://localhost:7520/example.appcache 
Application Cache Checking event 
Application Cache Error event: Manifest fetch failed ***(4)*** http://localhost:7520/example.appcache 

您能帮我解决一下这个问题。

6 个答案:

答案 0 :(得分:3)

我刚刚在自己的一个网站上遇到过这个问题(错误代码为4)。自从缓存下载以来,我已经对域上的所有URL建立了重定向,以重定向到该站点的HTTPS版本。我怀疑这个错误代码与由于重定向而无法使用清单有关。

在我的情况下,我通过清除chrome:// appcache-internals中的缓存文件解决了问题(个人),然后重新访问根站点以体验重定向到我的域的新安全版本。 / p>

如果您处于类似情况且无法清除appcache(例如,因为您的用户不知道他们正在接收陈旧内容),您可以尝试更改您的网站,以便在旧URL不会导致重定向,而是允许网络请求允许浏览器下载新版本的页面并遇到重定向。有关清除缓存清单的信息,请参阅this question

答案 1 :(得分:2)

我又失去了调试此问题的一天。 看起来,清单文件必须始终返回状态代码200(我遇到302问题),清单本身和清单中定义的所有文件必须返回到浏览器,而不需要标题no-store。

答案 2 :(得分:0)

这是一个愚蠢的错误,我做了一些愚蠢的事情并且有效:

  1. 访问 chrome:// appcache-internals / 并清除我的网络缓存
  2. 在CACHE MANIFEST行下添加#v1.0.1
  3. 刷新
  4. 然后我对新行进行了删除,并且错误没有回来。 @。@

答案 3 :(得分:0)

对我有用的只是打开记事本中的清单并保存为UTF-8 enconding有效。只需告诉浏览器呈现为UTF-8不会,该文件实际上必须采用UTF-8编码。

我还按照此博客中的说明http://www.codemag.com/article/1112051了解有关如何构建离线应用程序的详细信息。

答案 4 :(得分:0)

如果您正在使用它,请在Chrome内部禁用设备模拟器,或者参阅下面有关如何修复的详细说明。

刚刚为我找到了问题。我正在忙着构建移动网站,因此在构建移动网站时,我使用Google Chrome开发人员工具来模拟用户代理/设备模拟器。

problem while using device emulator

一旦我将此功能关闭,它就可以正常工作了。 disabling device emulator

问题似乎是传递给页面的主要加载的用户代理和清单的用户代理不匹配因此给出错误,因为如果不通过访问,我的代码将重定向(302)用户移动设备。

理论上,用户通过移动设备访问,但Chrome在请求清单内容时不会在设备选择器上发送“假”用户代理集。

所以这里我们得到主页: 127.0.0.1 - - [31 / Aug / 2016:12:53:58 +0200]“GET / HTTP / 1.1”200 7578“ - ”“Mozilla / 5.0(iPhone; CPU iPhone OS 9_1,如Mac OS X)AppleWebKit / 601.1.46(KHTML,与Gecko一样)Version / 9.0 Mobile / 13B143 Safari / 601.1“

然后检索清单: 127.0.0.1 - - [31 / Aug / 2016:12:53:58 +0200]“GET /manifest.appcache HTTP / 1.1”200 130“ - ”“Mozilla / 5.0(Macintosh; Intel Mac OS X 10_11_3)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 52.0.2743.116 Safari / 537.36“

然后它尝试让主页索引它,但用户代理在这里不正确: 127.0.0.1 - - [31 / Aug / 2016:12:53:58 +0200]“GET / HTTP / 1.1”302 - “ - ”“Mozilla / 5.0(Macintosh; Intel Mac OS X 10_11_3)AppleWebKit / 537.36(KHTML ,像Gecko)Chrome / 52.0.2743.116 Safari / 537.36“

答案 5 :(得分:0)

我刚遇到这个问题,原来是因为我的服务器返回内部服务器错误,因为我的服务器配置问题(.htaccess)。