4

我正在尝试在我的应用程序中实现 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 

你能帮我解决这个问题吗?

4

6 回答 6

3

我又浪费了一天时间来调试这个问题。看起来,清单文件必须始终返回状态码 200(我遇到了 302 的问题),并且清单本身和清单中定义的所有文件必须返回到浏览器,而没有标头 no-store。

于 2015-02-27T14:49:17.913 回答
3

我刚刚在我自己的一个网站上遇到了这个问题(错误代码为 4)。在下载缓存后,我对域上的所有 URL 进行了重定向,以重定向到站点的 HTTPS 版本。我怀疑此错误代码与由于重定向导致清单不可用有关。

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

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

于 2015-02-06T11:39:23.507 回答
0

这是一个愚蠢的错误,我做了一些愚蠢的事情并且它起作用了:

  1. 访问chrome://appcache-internals/并清除我的网络缓存
  2. 在 CACHE MANIFEST 行下添加 #v1.0.1
  3. 重新加载

然后我删除新行并且错误不再出现。@.@

于 2015-07-11T11:26:41.293 回答
0

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

于 2018-01-10T12:15:31.387 回答
0

如果您正在使用它,只需在 chrome 中禁用设备模拟器,或者查看下面关于如何修复的详细说明。

刚刚为我找到了问题。我正忙于构建一个移动站点,所以在构建它时,我使用 Google Chrome 开发人员工具来模拟用户代理/设备模拟器。

使用设备模拟器时出现问题

一旦我关闭此功能,它就可以正常工作。 禁用设备模拟器

问题似乎是传递给页面的主要加载的用户代理和清单的用户代理不匹配,因此如果我的代码不通过移动设备访问,我的代码将重定向(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) 版本/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, like 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, like Gecko) Chrome/52.0.2743.116 Safari/537.36"

于 2016-08-31T10:57:37.320 回答
0

对我有用的只是在记事本中打开清单并将其保存为 UTF-8 编码。只是告诉浏览器渲染为 UTF-8 是不行的,文件实际上必须是 UTF-8 编码。

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

于 2016-01-28T00:02:28.140 回答