Javascript - ERR_CONTENT_LENGTH_MISMATCH
Я создаю базовую площадку для игровых площадок jquery. Я получаю сообщение об ошибке: net::ERR_CONTENT_LENGTH_MISMATCH
происходит при загрузке страницы, а фоновые изображения не загружаются на страницу.
Изображение, о котором идет речь, составляет 300 кбайт, а также динамически меняется. Я предполагаю, что это имеет какое-то отношение к размерам файлов, но я действительно не знаю, что.
HTML, используемый первоначально:
<p style="margin:0px; padding:0px;">
<img id="background" src="/bg1.jpg" style='width:100%;' border="0" alt="Null">
</p>
javascript/jquery используется для изменения фона:
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";
};
}
Ответы
Ответ 1
Я получаю сообщение об ошибке: net:: ERR_CONTENT_LENGTH_MISMATCH
Посмотрите журналы своего сервера, чтобы определить, что такое настоящая проблема.
Для меня проблема лежит где-то между nginx и разрешениями файлов:
-
tail -f /usr/local/var/log/nginx/error.log
или запустите nginx -t
, чтобы определить местоположение вашего conf, где вы можете указать собственный путь к журналу.
- обновите актив в своем браузере, например
http://localhost:3000/assets/jquery/jquery.js
В журналах вы можете увидеть что-то подобное:
"/usr/local/var/run/nginx/proxy_temp/9/04/0000000049" не удалось (13: Permission denied) при чтении вверх по потоку для файла xyz
Вот как я исправил:
sudo nginx -s stop
sudo rm -rf /usr/local/var/run/nginx/*
sudo nginx
Ответ 2
Резюме
Вот более подробное объяснение того, что произошло в моем случае. Выбранный ответ помог мне решить мою проблему, и это в основном более подробная версия выбранного ответа на хау и whys!
Объяснение разрешений Nginx
Вы можете запустить nginx
в качестве пользователя nobody
, и это обычная практика в большинстве конфигураций образцов. Вы найдете эту строку в верхней части своей конфигурации:
user nobody;
Тем не менее, рекомендуется, чтобы для ваших веб-приложений статическое содержимое, такое как css, js и файлы изображений, позволяло доступ к nginx и обналичить его через обход вашего веб-приложения
контейнер. Это часть вашего конфига, где он читает:
location ^~ /static {
alias /path/to/your/static/folder/;
autoindex on;
expires max;
}
Это папка nginx
должна иметь доступ.
С другой стороны, существует nginx
выделенная папка, в которой в приведенном выше примере ответа находилось следующее:
/usr/local/var/run/nginx/
В моем случае (CentOS) это было в:
/var/lib/nginx/
Как все может пойти не так?
В любом из этих случаев вы можете сломать nginx
:
1- Nginx работает как никто, но не имеет права доступа к вашей статической папке.
2- Nginx работает как никто, но затем запускается как root, чтобы получить доступ к вашей статической папке.
Решение
Лучшим решением в моем случае было изменение разрешения выделенной папки nginx в соответствии с моей статической папкой. А затем запустите nginx с пользователем, имеющим правильный доступ к обоим.
Ответ 3
У меня была такая же ошибка при создании приложения rails. Я заменил изображение другим изображением и не изменил имя файла, которое запустило вышеприведенную ошибку. Простое изменение имени файла заставило проблему исчезнуть.
Ответ 4
В моем случае я использовал nodemon server.js
в приложении next.js
(на стороне сервера). При переключении обратно на node server.js
ошибка исчезла.
Ответ 5
Другой случай, когда у меня появилась эта ошибка: при попытке загрузить файл с сервера узла с Angular 7 мне пришлось перенаправить с помощью window.location.href = <node_server_url>
вместо обычного httpClient.get<any>(<node_server_url>)
.
Ответ 6
Вот еще один способ решить эту проблему:
http://derekneely.com/2009/06/nginx-failed-13-permission-denied-while-reading-upstream/
ПРИМЕЧАНИЕ. С точки зрения безопасности я не согласен с ссылкой, в которой автор предлагает предоставить 777 разрешений для папок. Дайте минимальный уровень, необходимый для выполнения работы (в этом случае 700 должно быть хорошо, вы могли бы даже снизить, хотя я еще не пытался это сделать).