Je développe un site Web qui utilise le manifeste de cache HTML (AppCache). Je vois souvent la ligne suivante dans la console de Chrome:
Application Cache Error event: Manifest fetch failed (6) https://192.168.0.102/static/index.appcache
Apparemment, le code d'erreur entre parenthèses est censé être le code d'état HTTP ou -1
si le navigateur est hors ligne. Mais mon serveur ne renvoie pas 6 comme code d'état. Alors qu'est-ce que ce code indique?
Le comportement de Chrome concernant cette erreur est très étrange. Si je l'oblige à télécharger à nouveau le site Web en supprimant le côté client appcache (via chrome://appcache-internals
), cette erreur se produit souvent, mais cette fois, elle n'empêche pas mais n'interrompt qu'un téléchargement en cours d'exécution; la deuxième actualisation fonctionne alors bien.
Le problème se produit, qu'il y ait ou non une nouvelle version du manifeste de cache, ce qui complique la mise à jour de l'appcache de Chrome. Le problème ne se produit pas dans IE 11.
J'utilise TLS avec un certificat auto-signé pour cette étape de développement. Les en-têtes de réponse HTTP du manifeste appcache sont HTTP/1.1 200 OK Accept-Ranges: bytes Cache-Control: no-cache, must-revalidate Content-Encoding: gzip Content-Type: text/cache-manifest; charset=utf-8 Expires: -1 Last-Modified: Fri, 11 Apr 2014 07:49:30 GMT Pragma: no-cache Vary: Accept-Encoding Date: Fri, 11 Apr 2014 07:51:38 GMT Content-Length: 480
Si vous examinez le code source de Chrome, ces numéros 6, 9 ou similaires sont des numéros d’ordre enum. Dans le cas de 6, il s'agit de NETWORK_ERROR
, dans le cas de 9, il s'agit de SECURITY_ERROR
.
Voici source montrant que si l'erreur donnée est SERVER_ERROR
, le code de réponse est mis, mais si ce n'est pas SERVER_ERROR
il mappera son erreur sur la valeur enum, et - cette énumération est définie ici et les codes sont:
UPDATE_OK
(0)DB_ERROR
(1)DISKCACHE_ERROR
(2)QUOTA_ERROR
(3)REDIRECT_ERROR
(4)MANIFEST_ERROR
(5)NETWORK_ERROR
(6)SERVER_ERROR
(7)CANCELLED_ERROR
(8)SECURITY_ERROR
(9)NUM_UPDATE_JOB_RESULT_TYPE
S (10)Pour être honnête, je n'ai vu que 4 lorsque le serveur envoyait 302, 9 lorsque le certificat est erroné et 6, mais je ne comprends toujours pas tout le problème.
Si vous rencontrez toujours ce problème, assurez-vous ...
J'avais exactement le même problème lorsque j'utilisais le cache d'applications sur Chrome v38.0.2125.111 m. J'ai essayé plusieurs configurations de manifeste différentes, mais à la fin j'ai simplement fermé Chrome et je l'ai rouvert à nouveau. Hé hop, le problème a disparu et la cache fonctionnait bien! J'espère que cela aide quelqu'un!