Не удалось загрузить ресурс: net:: ERR_CONTENT_LENGTH_MISMATCH
Что означает это сообщение об ошибке и как его разрешить? То есть с консоли Google Chrome v33.0, на Windows 7.
Не удалось загрузить ресурс: net:: ERR_CONTENT_LENGTH_MISMATCH http://and.img.url/here.png
Я пытаюсь изменить атрибут src
изображений с помощью jQuery. Например, например (упрощенное):
$('.image-prld').attr('src', someDynamicValue);
На странице имеется около 30 изображений. И вышеупомянутая ошибка происходит для случайных изображений каждый раз, когда я перезагружаю страницу. Но иногда он хорошо работает для всех изображений без ошибок.
При возникновении этой ошибки конкретное изображение отображается как this:
![enter image description here]()
Однако, когда я открываю ссылку рядом с сообщением об ошибке на новой вкладке, изображение загружается, что говорит мне логически, что изображения действительны и существуют.
Ответы
Ответ 1
Эта ошибка представляет собой определенное несоответствие между данными, которые рекламируются в заголовках HTTP, и данными, передаваемыми по кабелю.
Это может произойти из следующего:
-
Сервер. Если на сервере имеется ошибка с некоторыми модулями, которые изменяют содержимое, но не обновляют длину содержимого в заголовке или просто не работают должным образом. В какой-то момент это имело место для прокси-сервера Node HTTP (см. здесь)
-
Прокси. Любой прокси-сервер между вами и вашим сервером может изменять запрос и не обновлять заголовок длины содержимого.
Насколько я знаю, я не вижу этих проблем в IIS, но в основном с пользовательским письменным кодом.
Сообщите мне, если это поможет.
Ответ 2
Это может быть вызвано вашим блокировщиком рекламы.
Попробуйте отключить его или добавить исключение для домена, из которого происходят изображения.
Ответ 3
Docker + nginx
В моей ситуации проблема заключалась в дисковом пространстве контейнера док-станции nginx. У меня было 10 ГБ журналов, и когда я уменьшаю эту сумму, это работает.
Шаг за шагом (для новичков/новичков)
-
Введите в свой контейнер: docker exec -it container_id bash.
-
Перейдите в ваши журналы, например: /var/log/nginx.
-
[опционально] Показать размер файла: ls -lh
для отдельного размера файла или du -h
для размера папки.
-
Пустой файл/ы с > file_name
.
-
Оно работает!.
Для продвинутых разработчиков/системных администраторов
Очистите журнал nginx с помощью > file_name
или аналогичного.
Надеюсь, поможет
Ответ 4
Это может быть вызвано полным диском (Ubuntu/Nginx).
Моя ситуация:
Ответ 5
В моем случае я изменял запрос на добавление заголовка (используя Fiddler) в запрос https
, но я не настраивал его на расшифровывать https-трафик.
Ответ 6
В моем случае я просчитал Content-Length, который я рекламировал в заголовке. Я подавал запросы диапазона для файлов, и я ошибочно опубликовал размер файла в Content-Length.
Я исправил проблему, установив Content-Length в фактический диапазон, который я отправлял обратно в браузер.
Поэтому, если я отвечаю на обычный запрос, я устанавливаю Content-Length в размер файла. В случае, если я отвечаю на запрос диапазона, я устанавливаю Content-Length на фактическую длину запрошенного диапазона.
Ответ 7
В моем случае это была проблема с прокси-сервером (запросы от nginx, передаваемые в кэш-память), которая вызвала проблему. Мне нужно было добавить следующее в мое определение прокси
proxy_set_header Connection keep-alive;
Я нашел ответ здесь: fooobar.com/questions/708759/...
Ответ 8
Если это связано с докером, попробуйте остановить ошибочный контейнер и запустить новый контейнер с помощью команды docker run
из того же образа.