web-dev-qa-db-fra.com

Javascript - ERR_CONTENT_LENGTH_MISMATCH

Je fais un site de base de jeux jQuery. Je reçois une erreur: net::ERR_CONTENT_LENGTH_MISMATCH se produit au chargement de la page et les images d'arrière-plan ne se chargent pas sur la page.

L'image en question fait 300 Ko et change également de manière dynamique. 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 changer le fond:

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";
  };
}
40
LiamHT

Je reçois une erreur: net :: ERR_CONTENT_LENGTH_MISMATCH

Regardez les journaux de votre serveur pour déterminer quel est le véritable problème.

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

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

Vous pouvez voir quelque chose comme ceci dans les journaux: 

"/ usr/local/var/run/nginx/proxy_temp/9/04/0000000049" a échoué (13: Autorisation refusée) lors de la lecture en amont du fichier xyz

Heres comment j'ai fixé:

Sudo nginx -s stop    
Sudo rm -rf /usr/local/var/run/nginx/*    
Sudo nginx
44
lfender6445

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. Il s'agit en gros d'une version plus détaillée de la réponse sélectionnée, comment et pourquoi!

Expliquer les autorisations Nginx

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

user nobody;

Il est toutefois suggéré que, pour vos applications Web, les contenus statiques, tels que les fichiers css, js et les fichiers image, autorisent l’accès à nginx et le récupèrent 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 que nginx doit avoir accès. 

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

/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 ou l'autre cas, vous pouvez décomposer nginx:

1- Nginx fonctionne comme personne mais n’a pas le droit d’accéder à votre dossier statique.

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

Solution

La meilleure solution dans mon cas était de changer l'autorisation du dossier dédié nginx afin qu'elle corresponde à mon dossier statique. Et puis exécutez nginx avec en tant qu'utilisateur ayant le droit d'accès aux deux. 

7
AmirHd

Dans mon cas, j'utilisais nodemon server.js dans une application next.js (rendue côté serveur). En revenant à node server.js, l'erreur a disparu.

0
Paul Berg

J'ai eu la même erreur lors de la construction d'une application Rails. J'ai remplacé une image par une autre image sans changer le nom du fichier, ce qui a provoqué l'erreur ci-dessus. Changer simplement le nom du fichier a fait disparaître le problème. 

0
duhaime