Javascript – ERR_CONTENT_LENGTH_MISMATCH

Je crée un site de base de jeu jquery. Je reçois une erreur: net::ERR_CONTENT_LENGTH_MISMATCH se produit en charge de la page et les images d'arrière-plan ne sont pas chargées sur la page.

L'image en question est 300kb et change également dynamiquement. Je suppose que cela a quelque chose à voir avec la taille des fichiers, mais je ne sais pas vraiment quoi.

HTML utilisé à l'origine:

 <p style="margin:0px; padding:0px;"><img id="background" src="/bg1.jpg" style='width:100%;' border="0" alt="Null"></p> 

Javascript / jquery utilisé pour modifier l'arrière-plan:

  var changebg = function() { if (myscore % 20 == 0) { level++; document.getElementById("level").innerHTML = "Level: " + level; $("#level").fadeIn(1500, function(){$("#level").hide()}) backgroundindex++; if (backgroundindex > 6) {backgroundindex == Math.floor((Math.random()*6)+1)}; document.getElementById("background").src="/bg"+backgroundindex+".jpg"; }; } 

Je reçois une erreur: net :: ERR_CONTENT_LENGTH_MISMATCH

Jetez un oeil à vos journaux du serveur pour déterminer quel est le problème réel.

Pour moi, le problème se situe entre le nginx et les autorisations de fichier:

  • tail -f /usr/local/var/log/nginx/error.log ou exécutez nginx -t pour déterminer votre emplacement conf, où vous pouvez spécifier un chemin de journal personnalisé.
  • Actualisez l'actif dans votre navigateur, p.ex. http://localhost:3000/assets/jquery/jquery.js

Vous pouvez voir quelque chose comme ça dans les journaux:

"/ Usr / local / var / run / nginx / proxy_temp / 9/04/0000000049" a échoué (13: Autorisation refusée) pendant la lecture en amont pour le fichier xyz

Voici comment j'ai réparé:

 sudo nginx -s stop sudo rm -rf /usr/local/var/run/nginx/* sudo nginx 

Résumé

Voici une explication plus détaillée de ce qui s'est passé dans mon cas. La réponse sélectionnée ici m'a aidé à résoudre mon problème et il s'agit essentiellement d'une version plus détaillée de la réponse sélectionnée sur les wows et les paroles.

Explication des autorisations Nginx

Vous pouvez exécuter nginx tant qu'utilisateur nobody et c'est la pratique courante dans la plupart des configurations d'exemples. Vous trouverez cette ligne en haut de votre configuration:

 user nobody; 

Il est cependant suggéré que, pour vos contenus statiques, tels que les fichiers css, js et image, pour permettre l'accès nginx et l'encaisser en contournant votre application Web
récipient. C'est la partie de votre configuration où il se lit:

 location ^~ /static { alias /path/to/your/static/folder/; autoindex on; expires max; } 

C'est le dossier nginx doit avoir accès.

D'autre part, il existe un dossier dédié nginx où dans le cas de la réponse ci-dessus:

 /usr/local/var/run/nginx/ 

Dans mon cas (CentOS), c'était dans:

 /var/lib/nginx/ 

Comment les choses peuvent-elles aller mal?

Dans l'un de ces cas, vous pouvez casser nginx :

1- Nginx fonctionne comme personne mais n'a pas le bon accès à votre dossier statique.

2- Nginx s'exécute en tant que personne, mais s'exécute en tant que root pour accéder à votre dossier statique.

Solution

La meilleure solution dans mon cas était de modifier l'autorisation du dossier dédié nginx pour correspondre à mon dossier statique. Ensuite, exécutez nginx avec un utilisateur avec un bon accès aux deux.

Voici une autre façon de résoudre ce problème: http://derekneely.com/2009/06/nginx-failed-13-permission-denied-while-reading-upstream/

REMARQUE: Du point de vue de la sécurité, je ne suis pas d'accord avec le lien où l'auteur suggère de donner 777 autorisations aux dossiers. Donnez le niveau minimum nécessaire pour effectuer le travail (dans ce cas, 700 devraient être bien, vous pourriez même baisser, même si je n'ai pas encore essayé).

J'ai eu la même erreur lors de la construction d'une application de rails. J'ai remplacé une image par une image différente et n'a pas changé le nom du fichier, qui a jeté l'erreur ci-dessus. Simplement changer le nom du fichier, le problème disparaît.