Диалог клиентской программы (браузера, робота поисковой системы и других) с сервером, отличаясь только деталями, ведется по одним и тем же принципам: запрос клиента — ответ сервера в виде кода. Он состоит из трехзначного числа (первая цифра в котором указывает на класс состояния HTTP) и фразы-пояснения на английском языке. Прочитав первичную инструкцию, программа понимает, как вести дальнейшую работу с запрашиваемым документом или страницей. В каждом классе может быть несколько кодовых вариаций. Далее разберемся, что представляет собой ошибка 304, какие причины приводят к её возникновению и какие методы исправления существуют.
Если поисковый бот уже видел документ/страницу в том виде, в каком они представлены на данный момент, сервер выдает код 304 Not Modified (Не изменен). Это означает, что кэш, сгенерированный во время предыдущего визита, актуален (If-Modified-Since или If-Match не изменились). То есть роботу нет необходимости ещё раз полностью исследовать часть сайта, достаточно будет получить http-заголовки и двигаться дальше, существенно сэкономив время на индексировании.
При этом снижается нагрузка на сервер, которому нужно передавать автору запроса только измененные документы или страницы. Соответственно, увеличивается скорость работы: если пользователю требуется попасть на страницу, с момента предыдущего визита оставшуюся неизменной, то документ повторно не пересылается, браузер выдает локальную копию, ранее уже сохраненную в кэше.
В ответе сервера содержатся следующие поля заголовков (они всегда завершаются пустой строкой):
-
Date;
-
ETag или Content-Location;
-
Expires, Cache-Control или Vary.
Ошибка Not Modified может появляться в любых из нижеперечисленных операционных систем:
-
Windows 2000;
-
Windows ME;
-
Windows XP;
-
Windows Vista;
-
Windows 7;
-
Windows 8;
-
Windows 10.
Признаки наличия ошибки HTTP 304
-
Окно активной программы закрывается после демонстрации сообщения «Ошибка HTTP 304».
-
Используемый браузер постоянно сообщает об ошибке HTTP 304 на одном или нескольких веб-ресурсах.
-
Отображается «Not Modified».
-
Медленная работа Windows, отсроченная реакция на ввод с мыши или клавиатуры.
-
Компьютер подвисает на некоторое время (случается периодически).
Не всегда сообщения браузера об ошибке отражают истинное положение дел. Так, «Страница не найдена» (HTTP 404) может выдаваться и при посещении нормально функционирующей страницы. То же с ошибкой 304, которая далеко не всегда указывает на действительно не измененную с даты последнего сканирования страницу. Ошибка может стать следствием целого ряда причин, которые мы рассмотрим в следующем разделе.
Причины возникновения ошибки HTTP 304
-
Интернет-браузер может быть поврежден вирусом или вредоносной инфекцией, которые перехватывают контроль и действуют в своих корыстных целях.
-
Если недавно производились установка или удаление Windows, реестр операционной системы может быть поврежден.
-
Файлы браузера могут быть инфицированы внешней вредоносной программой.
Очевидно, ответ на вопрос: «304 ошибка — что это?» не может ограничиться только описанием ответа сервера, который предлагает использовать сохраненную версию неизмененной страницы.
Так, ошибка 304 вполне может быть результатом заражения браузера вирусными инфекциями, которые негативно отражаются и на реестре Windows. Сообщения об ошибках будут появляться всё чаще, тормозя работу и, мягко говоря, раздражая. Чтобы устранить проблемы, нужно последовательно выполнить ряд действий.
Как исправить ошибку 304: пошаговое руководство
Приведенная инструкция составлена таким образом, чтобы избежать ненужных усилий и временных затрат. Двигаясь от простого к сложному, можно с наименьшими потерями исправить ошибку через устранение причин, следствием которых она является.
Шаг 1. Восстановление записей реестра, связанных с ошибкой 304
Если вы опытный мастер, то вполне можете вручную внести редакторские правки в реестр. В противном случае лучше довериться надежным инструментам, например разработанной Microsoft Gold Certified Partner утилите Reimage, которая поможет оптимизировать операционку, избавив её от накопившегося мусора.
Реестр — это иерархически выстроенная текстовая база, хранящая практически все системные настройки. Даже малейшая неточность (поставленная не в том месте запятая, удаленный символ и другие) может нанести серьезный ущерб системе и компьютеру в целом вплоть до его полной неработоспособности. Риск велик, поэтому для исправления ошибки 304 лучше всего привлекать автоматическую чистку.
Перед каждым сканированием программа создает резервную копию, защищая тем самым компьютер от возможного повреждения. Если были внесены ненужные изменения, их можно отменить одним щелчком мыши. В процессе работы программа находит поврежденные записи, нерабочие ссылки и ссылки на несуществующие файлы (которые, к примеру, вызывают ошибку 304). После проведения автоматической чистки вы можете в буквальном смысле не узнать свой ПК, который начнет работать значительно быстрее.
Важно: ручное редактирование реестра Windows НЕ рекомендовано неопытным пользователям. Если «Редактор реестра» используется некорректно, это может стать причиной серьезных проблем в работе компьютера и привести к необходимости переустановки системы. Нет гарантии устранения неполадок, ставших следствием неправильного использования «Редактора реестра». Принимая решение о редактировании вручную, вы пользуетесь «Редактором реестра» на свой страх и риск.
Подготовка к редактуре включает обязательный этап — создание резервной копии. Исправляя ошибку 304, необходимо экспортировать ту часть реестра, которая связана с пояснением кода «Не изменен» (например, Windows Operating System):
-
Нажать кнопку «Начать».
-
Ввести «command» в строке поиска… ENTER НЕ НАЖИМАТЬ!
-
Зажав CTRL-Shiftна клавиатуре, нажать ENTER.
-
Появляется диалоговое окно доступа.
-
Нажать «Да».
-
Черный ящик открыть мигающим курсором.
-
Ввести «regedit», затем нажатьENTER.
-
В «Редакторе реестра» выбрать ключ, связанный с ошибкой 304 (например, Windows Operating System), для которого требуется создать резервную копию.
-
В меню «Файл»выбрать «Экспорт».
-
В списке «Сохранить в»выбрать папку, куда отправится резервная копия ключа Windows Operating System.
-
В поле «Имя файла»ввести название файла резервной копии (например, «Windows Operating System резервная копия»).
-
Убедиться, что в поле «Диапазон экспорта»выбрано значение «Выбранная ветвь».
-
Нажать «Сохранить». Файл будет сохранен с расширением .reg.
Резервная копия записи реестра, связанная с ошибкой 304 (Not Modified), готова.
Шаг 2. Полное сканирование компьютера на предмет вредоносного программного обеспечения
Ошибка Not Modified может возникать вследствие заражения компьютера вредоносным ПО, которое повреждает или даже удаляет файлы, связанные с кодами состояний браузера. Не исключена вероятность связи ошибки 304 с компонентом самой вредоносной программы.
Шаг 3. Очистка системы от мусора (временных файлов и папок) с помощью очистки диска (cleanmgr)
Утилита позволяет освободить жесткий диск от хлама, который неизбежно появляется со временем. Ненужные файлы не только перегружают память, снижают работоспособность компьютера, но могут ещё и стать причиной ошибки с кодом 304.
Совет: cleanmgr — отличный встроенный инструмент, однако ему не под силу вычистить абсолютно все временные файлы с компьютера. Даже некоторые майкрософтовские программы не поддаются его очистке, не говоря уже о Chrome, Firefox, LiveMessenger и сотнях других.
Поэтому для качественной «уборки» следует применять специализированное программное обеспечение очистки жесткого диска / защиты конфиденциальности, например продукт от Microsoft Gold Partner — WinSweeper, проводящий очистку всего компьютера. Если раз в день запускать автоматическое сканирование WinSweeper, можно гарантировать чистоту устройства, высокую скорость его работы и отсутствие ошибок Not Modified, поскольку будет устранена их причина — временные файлы, мешающие нормальному функционированию системы.
Алгоритм запуска cleanmgr (очистка диска) на Windows 7, 8, 10, XP, Vista:
-
Нажать кнопку «Начать».
-
Ввести «command» в строке поиска… ENTER НЕ НАЖИМАТЬ!
-
Зажав CTRL-Shiftна клавиатуре, нажать ENTER.
-
Появляется диалоговое окно доступа.
-
Нажать «Да».
-
Черный ящик открыть мигающим курсором.
-
Ввести «cleanmgr» и нажать ENTER.
-
Программа подсчитает, сколько дискового пространства можно освободить от ненужных файлов.
-
Откроется диалоговое окно «Очистка диска», где нужно выбрать флажки, отметив категории для «уборки». Чаще всего большую часть диска занимают «Временные файлы».
-
Установив флажки, нажать «OK».
Кейс: VT-metall
Узнай как мы снизили стоимость привлечения заявки в 13 раз для металлообрабатывающей компании в Москве
Узнать как
Шаг 4. Обновление драйверов устройств компьютера
Ещё одной причиной возникновения ошибки Not Modified может являться устаревание или повреждение драйверов. Кажется, ещё вчера всё было прекрасно, все устройства работали без сбоев, а сегодня драйверы уже вышли из строя. Оптимально решить эту проблему с помощью утилиты обновления драйверов (например, DriverDoc от разработчика Microsoft Gold Partner). Обновление драйверов — процесс сложный и длительный, не стоит отказываться от прекрасной возможности его автоматизировать.
Ошибка 304 может быть устранена, может остаться, поскольку её причиной не являются проблемы в драйверах. Но в любом случае четвертый шаг алгоритма будет полезен. Чтобы компьютер работал быстро и без сбоев, нужно убедиться, что в управлении устройствами операционной системе помогают новейшие программы.
Шаг 5. Восстановление системы Windows для отмены последних изменений
Данный шаг помогает откатиться к тому моменту, когда компьютер работал без сбоев и навязчивой ошибки Not Modified. Порой отмена внесенных изменений может стать средством устранения причин, приведших к появлению ошибки 304.
Важно помнить, что восстановление системы не оказывает влияния на данные (документы, изображения, музыку).
Алгоритм восстановления системы для Windows 7, 8, 10, XP, Vista:
-
Нажать кнопку «Начать».
-
Ввести в строке поиска «Восстановление системы»и нажать ENTER.
-
В окне результатов выбрать «Восстановление системы».
-
Появится запрос пароля, ввести пароль администратора.
-
Для выбора точки восстановления следовать предлагаемым «Мастером» инструкциям.
-
Восстановить компьютер.
Шаг 6. Удаление и восстановление связанной с ошибкой Not Modified программы Windows Operating System
Алгоритм для Windows 7 и Vista:
-
Нажать кнопку «Пуск», найти «Программы и компоненты», открыть.
-
В меню справа нажать на «Панель управления».
-
Выбрать «Программы».
-
Выбрать «Программы и компоненты».
-
В столбце«Имя» найти «Windows Operating System», нажать.
-
В верхней ленте меню нажать кнопку «Удалить».
-
Для завершения удаления Windows Operating System нужно следовать инструкциям, которые появятся на экране.
Алгоритм для Windows XP:
-
Нажать кнопку «Пуск», найти «Программы и компоненты», открыть.
-
Нажать на «Панель управления».
-
Нажать на «Установка и удаление программ».
-
В списке «Установленные программы» найти Windows Operating System, нажать.
-
Справа нажать на кнопку «Удалить».
-
Чтобы завершить удаление Windows Operating System, необходимо следовать инструкциям на экране.
Алгоритм для Windows 8:
-
Курсор мыши установить в левой нижней части экранадля показа изображения меню «Пуск».
-
Щелкнуть правой кнопкой мышидля вызова контекстного меню «Пуск».
-
Нажать «Программы и компоненты».
-
В столбце«Имя» найти и нажать на Windows Operating System.
-
В верхней ленте меню нажать «Удалить/изменить».
-
Для завершения удаления Windows Operating System нужно следовать инструкциям на экране.
Когда удаление будет успешно завершено, необходимо заново установить программу (в рассмотренном примере — Windows Operating System). В этом поможет инструкция Microsoft Corporation.
Обратите внимание: шаг 6 решит проблему, если причиной ошибки Not Modified является определенная программа Microsoft Corporation. Удалив и повторно установив её, вы, скорее всего, избавитесь от ошибки 304.
Шаг 7. Запуск проверки системных файлов Windows («sfc /scannow»)
Поврежденные системные файлы нередко могут приводить к ошибке 304. Чтобы узнать, есть ли такие в Windows, нужно просканировать систему, а потом восстановить элементы с выявленными повреждениями. Для этого в состав операционной системы включен очень удобный инструмент проверки.
Алгоритм проведения проверки файлов системы для Windows 7, 8, 10, XP, Vista:
-
Нажать кнопку «Начать».
-
Ввести «command» в строке поиска… ENTER НЕ НАЖИМАТЬ!
-
Зажав CTRL-Shiftна клавиатуре, нажать ENTER.
-
Появляется диалоговое окно доступа.
-
Нажать «Да».
-
Черный ящик открыть мигающим курсором.
-
Ввести «sfc /scannow» и нажать ENTER.
-
Программа проверки начнет сканирование системы, в том числе на предмет ошибки 304. Процесс может быть небыстрым, нужно запастись терпением, чтобы в итоге получить полную и объективную картину.
-
Необходимо следовать командам на экране.
Шаг 8. Установка обновлений операционной системы
В некоторых случаях для решения проблемы с возникновением ошибки Not Modified достаточно обновить Windows. Разработчики постоянно улучшают системные файлы, формируют пакеты обновлений и различные патчи, которые становятся ценными помощниками для реализации шага 8. Найдите обновления, установите их и устраните ошибку 304 — иногда именно так и будет выглядеть резюме процесса.
Для проверки наличия обновлений Windows 7, 8, 10, XP, Vista, необходимо:
-
Нажать кнопку «Начать».
-
В строке поиска ввести «update» и нажать ENTER.
-
Появится диалоговое окно «Обновление Windows».
-
В случае если доступные обновления есть, нужно нажать кнопку «Установить обновления».
Шаг 9. Чистая установка Windows
Порой 304 ошибка сервера — проблема, которая может быть решена только через переустановку операционной системы. Принципиально важно тщательно подготовиться к сложному процессу. Необходимо создать резервные копии всех важных данных, которые нельзя потерять. Это могут быть изображения, документы, программы установки ПО и прочее.
Существуют рекомендованные инструменты для резервного копирования, которые выполняют столь ценную работу по сохранению данных. Важность создаваемых копий можно недооценивать, когда компьютер работает в штатном режиме. Но как только возникают проблемы, значимость резервного копирования сразу становится очевидной.
Важно! Если переустановка Windows не привела к устранению ошибки 304, это говорит об ОБЯЗАТЕЛЬНОЙ связи проблемы с аппаратным обеспечением. Причину следует искать в оборудовании, которое с большой долей вероятности необходимо будет заменить.
Коротко о других основных кодах-ошибках по протоколу HTTP
Информационные (Informational 1xx)
Числовые коды от 100 до 199 указывают на принятие, понимание и обработку клиентского запроса.
-
100=»Continue»
Ответ «Продолжить» означает: первая часть запроса сервером успешно принята, можно продолжать запрашивать.
-
101=»SwitchingProtocols»
«Переключение протокола». Сервер переключается на определенный протокол, указание на который дано в заголовке Upgrade клиентского запроса.
Успешные (Successful 2xx)
Коды от 200 до 299 входят в класс «Успешных» и означают принятие запроса и отправку запрашиваемого документа.
-
200=»OK»
Успешная обработка запроса, ответ включает данные, затребованные клиентом.
-
201=»Created»
«Создан». Сервер сгенерировал новый идентификатор URI, информацию о размещении новых данных можно найти в заголовке ответа сервера Location.
-
202=»Accepted»
«Принят». Сервер приступит к обработке принятого запроса позже, но не факт, что клиент получит то, что искал. Причины невыполнения изначально принятого запроса будут указаны в пояснительном сообщении.
-
203=»Non-Authoritative Information»
«Неавторитетная информация». Таким образом сервер уведомляет клиента о том, что возвращенный документ/страница взят из другого источника или из локальной копии.
-
204=»NoContent»
«Нет контента». В ответе содержатся заголовок (который может быть полезен клиенту) и код состояния при отсутствии содержимого. Сервер указывает на отсутствие необходимости предпринимать какие-либо действия, когда пользователь щелкает, например, по пустому месту страницы или изображения.
-
205=»ResetContent»
«Сбросить содержимое». Чаще всего используется для указания на необходимость очистки используемой транзакционной формы для дополнительных входных данных. Это могут быть поля для ввода сообщений и другие формы, требующие заполнения.
-
206=»PartialContent»
«Частичный контент». Используется в ответе на запрос с указанием заголовка Range, в соответствии с которым сервер возвращает определенную часть данных и указывает их диапазон в заголовке Content-Range.
-
233 — because not everyone lives in «your country»
Соединение с сервером успешно устанавливается, но при входе в систему происходит ошибка из-за того, что на другом конце канала «отсутствует процесс». Ошибка возникает вследствие того, что на сервере не настроен прием удаленных соединений.
Перенаправление запроса (Redirection 3xx)
Коды от 300 до 399 указывают на необходимость дополнительных действий для получения релевантного ответа на запрос.
-
300=»MultipleChoices»
«Множественность выбора» в ответе сервера означает, что затребованный идентификатор ресурса ведет к нескольким страницам (к примеру, документ, переведенный на несколько языков, находится по одному адресу). Подробности ошибки можно узнать в теле ответа, но чаще всего причиной становятся заголовки или адреса.
-
301=»MovedPermanently»
«Перемещен навсегда». Указанный запрос не выполняется, поскольку затребованный URI уже не используется сервером. В заголовке ответа Location указан новый адрес документа. Чаще всего способ используется для редиректа, когда пользователь перенаправляется с одной страницы на другую.
Если запрос выполняется не методом HEAD, в теле сообщения сервер должен передать гипертекстовое пояснение. Если запросы выполняются любым методом, кроме GET и POST, необходимо уведомлять клиента об изменении ссылки. Некоторые агенты после перехода на другой адрес ошибочно меняют метод POST на GET — об этом нужно помнить.
-
302=»MovedTemporarily»
«Перемещен временно». Близок по смыслу предыдущему коду, но в данном случае старый объект оказывается недоступен на временной основе. Например, если на странице ведутся работы, мастер может создать ее дубликат с новым урлом. Новое место расположения указывается в заголовке ответа Location. Получив код 302, программа-клиент должна разрешить запрос при помощи нового идентификатора в данный момент, в дальнейшем следует использовать прежний URL.
Как и в ситуации с 301-редиректом, от сервера требуется гипертекстовое пояснение (при использовании любого метода, кроме HEAD) и уведомление клиента о смене URL (если используются методы за исключением GET и POST).
-
303=»SeeOther»
Требуемый идентификатор находится по другому URL, который указывается в заголовке ответа Location. Клиент должен сделать запрос GET-запрос, чтобы получить доступ к запрашиваемому документу/странице.
-
305=»UseProxy»
Использовать прокси-сервер, адрес которого указывается в заголовке Location. Доступ к запрашиваемому объекту можно получить только таким образом.
-
306=»(Unused)»
Больше не использовать
-
307=»TemporaryRedirect»
Временное перемещение. Похож на 302 временный редирект, но используемый метод не должен изменяться.
Ошибки со стороны клиента (ClientError 4xx)
Коды от 400 до 499 указывают на неполноту запроса, иногда от клиента требуются дополнительные данные, чтобы сервер мог возвратить информацию.
-
400=»BadRequest»
Обнаружена синтаксическая ошибка в клиентском запросе.
-
401=»Unauthorized»
Передается с заголовком WWW-Authenticate. Код указывает на необходимость авторизации, поскольку без подтверждения полномочий сервер не может предоставить требуемые данные.
-
402=»PaymentRequired»
«Требуется оплата». Код не используется, является резервом на будущее.
-
403=»Forbidden»
Доступ запрещен, что не позволяет серверу предоставить клиенту ответ на запрос.
-
404=»NotFound»
Указывает, что документ не найден по указанному идентификатору.
-
405=»MethodNotAllowed»
Код «метод не поддерживается» выдается с заголовком Allow. Используемый клиентом метод деактивирован и не поддерживается для данного идентификатора.
-
406=»Not Acceptable»
Вместе с кодом сервер выдает заголовки Content-Language, Content-Encoding и Content-Type. Указывает, что указанный клиентом ресурс не содержит контента, требуемого в запросе.
-
407=»ProxyAuthenticationRequired»
Используется с заголовком Proxy-Authenticate и указывает, что прокси-сервер требует авторизоваться. Пользователь должен подтвердить полномочия, чтобы получить данные по запросу.
-
408=»RequestTime-out»
Сервер вынужден разорвать сетевое соединение, поскольку в течение отведенного на это времени пользователь не передал полный запрос.
-
409=»Conflict»
Клиентский запрос вступает в конфликт с конфигурацией сервера или другим запросом. О причинах сервер должен проинформировать в пояснении к коду, но чаще всего требуется обращаться к провайдеру.
-
410=»Gone»
Существовавшая ранее страница удалена навсегда.
-
411=»LengthRequired»
Требуется указать заголовок Content-Length, без которого запрос не будет принят сервером.
-
412=»PreconditionFailed»
В заголовках указаны невыполнимые для сервера условия.
-
413=»RequestEntityTooLarge»
Объявленный сервером лимит на размер запроса превышен, поэтому обработка не состоится.
-
414=»Request-URI TooLong»
Слишком длинный идентификатор запроса, обработки не последует.
-
415=»UnsupportedMediaType»
Тело запроса вводится в не поддерживаемом сервером формате, обработки не будет.
-
416=»RequestedRangeNotSatisfiable»
Некорректное значение в поле Range (выражается в байтах) не позволяет обработать запрос.
-
417=»ExpectationFailed»
Некорректное значение в поле Expect (Ожидание).
-
422=»UnprocessableEntity»
Запрос успешно принят, указанный вид данных может быть обработан, но имеющаяся логическая ошибка не позволяет провести обработку.
Данный код в некоторых системах отправляется клиенту, если требуются дополнительные данные для передачи: NOT ENOUGH DATA.
-
429=»You exceeded the rate limit»
Лимит запросов превышен. Может быть указано время ожидания для введения нового запроса.
-
449 — Retry with a proxy in another country.
Необходимо повторить запрос через прокси «в другой стране», потому что параметры запроса не могут быть приняты сервером.
-
450=Rating Service Unavailable
-
451=UnavailableForLegalReasons
Причины отказа в доступе кроются в юридических ограничениях.
-
452 could be site not permitted by employer
-
453 could be site not permitted by ISP
-
460 BlockedbyRepressiveRegime
Заблокировано репрессивным режимом. Проще говоря, цензура.
Ошибки сервера (ServerError 5xx)
Коды от 500 до 599 сервер отправляет, признавая свою вину в невыполнении операции.
-
500=»InternalServerError»
Часто бывает связано с ошибками в файле .htaccess, но вообще обозначает аварийный отказ компонента сервера или ошибку конфигурации.
-
501=»NotImplemented»
Непонимание метода запроса или невозможность выполнить требуемое клиентом действие.
-
502=»BadGateway»
Выступая в роли посредника, сервер получает недопустимые ответы от вышестоящего «коллеги».
-
503=»ServiceUnavailable»
Технические причины в данный момент не позволяют выполнить запрос клиента. Если сервер знает, когда доступ будет восстановлен, то уведомляет об этом в заголовке Retry-After.
-
504=»GatewayTime-out»
Превышение лимита времени вышестоящим сервером.
-
505=»HTTP Versionnotsupported»
В запросе использована версия протокола HTTP, которую сервер не поддерживает.
Облако тегов
Понравилась статья? Поделитесь:
The HTTP 304 not modified status code indicates a communication problem between a user’s browser and a website’s server. If you or your users come across this status code on your site, it can block access to your content entirely.
Since it can be on the server-side or the client-side, figuring out the source of the problem can take a little work. Fortunately, there are several foolproof techniques for troubleshooting it.
In this post, we’ll discuss HTTP status codes and explain what the HTTP 304 status code is. Then we’ll walk you through six methods you (or your visitors) can use to fix it.
Let’s get started!
An Introduction to HTTP Status Codes
To understand HTTP 304, it helps to first understand status codes. Put simply, every time you make a request to your browser – such as by accessing a particular website – an HTTP status code is sent between your browser and the server in order to exchange information.
There are more than 40 different status codes that can be involved in that communication. However, there are only a handful you’ll likely come across directly. When you do encounter a status code, it usually means that something has gone wrong.
HTTP status codes fall into one of five categories, numbered between the 100s and 500s. Each series indicates a different type of problem. For example, error codes that fall into the 400s, such as the “404 Not Found” error and the ”401 error”, typically mean that there was an issue with the request and the website or page in question was unreachable.
On the other hand, codes in the 300s – such as the HTTP 304 status code we’ll focus on in this post – are redirection codes. They make it clear that the information being requested was either temporarily or permanently substituted with another resource.
When you encounter one of these status codes, it means that further action must be taken.
What is The HTTP 304 Status Code?
HTTP 304, also sometimes known as “304 Not Modified”, is a code that communicates to your browser that: “The requested resource has not been modified since the last time you accessed it.”
The Internet Engineering Task Force (IETF) defines the 304 Not Modified as:
The 304 (Not Modified) status code indicates that a conditional GET or HEAD request has been received and would have resulted in a 200 (OK) response if it were not for the fact that the condition evaluated to false. In other words, there is no need for the server to transfer a representation of the target resource because the request indicates that the client, which made the request conditional, already has a valid representation; the server is therefore redirecting the client to make use of that stored representation as if it were the payload of a 200 (OK) response.
Essentially, your (or your visitor’s) browser is being told by the server that the resources stored (cached) in the browser haven’t been modified since the latest time you visited that page.
In turn, your browser retrieves a saved version of the web page from the cache. The purpose of this is to improve page speed and delivery, by preventing your browser from having to repeatedly download the same information.
Check Out Our Video Guide to the 304 Not Modified Status Code and All 3xx Redirects
Understanding HTTP 304 Requests
When your browser stores a resource in the cache, it keeps what’s called the ‘Last-Modified header’ information that was sent from the server. If a browser receives a request for a web page it has a saved copy of, but it doesn’t know whether it has the latest version, it sends a ‘conditional validation’ request to the server.
The browser communicates to the server the ‘Last-Modified’ date and time for the copy of the resource it has, via the ‘If-Modified-Since’ or ‘If-None-Match’ header. The server inspects these headers and also looks at the ETag value. The latter is a unique identifier used to specify the version of a particular resource.
If the values for these files are the same, the server sends the HTTP 304 Not Modified response header and the browser uses the cached copy of the resource.
If the browser copy is outdated, meaning that the file has been modified since the last request, it sends an HTTP 200 code and a new copy is used.
Unfortunately, there are a few issues that might cause an HTTP 304 response when it’s not supposed to occur. The most common causes include:
- Server configuration or Domain Name Server (DNS) issues
- A cached resource that is infected or corrupted (i.e., malware or viruses affecting the browser)
The 304 status code can be due to a problem on either the server-side or the client-side, so it might take some troubleshooting in order to diagnose and resolve it.
The HTTP 304 status code can block access to all of your content which means understanding how to fix it is crucial 🚨 This guide has 6 methods to get things back up and running ASAP ✨Click to Tweet
How to Fix an HTTP 304 Status Code (6 Potential Methods)
The methods you can use to resolve an HTTP 304 status code vary from simple to fairly technical. Search engines are responsible for indexing and caching websites, so this issue can usually be traced back to the browser being used to access the site.
Of course, there’s only so much you can do to fix the browsers of people who are trying to access your site.
However, understanding what may be causing the issue for visitors can be helpful, either when trying to find a solution on your end or assisting them directly.
With that in mind, let’s take a look at six methods you can use to try and fix an HTTP 304 status code!
1. Clear the Browser’s Cache Data
First up, cleaning your browser data to clear the cache might help with accessing the desired URL. This includes deleting all of the browsing data, cookies, and cache information.
The instructions for executing this process will vary depending on the browser you’re using. If you’re unsure how to do it on your device, feel free to refer to our guide on clearing the cache for all major browsers.
2. Run a Malware Scan
Corrupted browsers that have been infected with a virus or malware may be another culprit. Therefore, it’s a good idea to run a malware scan on your system. Doing so can help identify and remove any issues that might be interrupting or interfering with the header request, including problematic extensions.
If you’re using the Windows version of Chrome, you can run the Malware Scanner and Cleanup Tool that comes built-in.
To do this, first make sure you’re running the latest version of Chrome by opening up a new tab and clicking on the menu icon, followed by About Chrome:
If your browser isn’t updated to the current version, you can resolve that in the same place. Then, open a new Chrome tab and enter “chrome://settings/cleanup” into the URL bar.
Hit Enter, and then next to Find and remove harmful software click on the Find button:
The scanner will begin running, then report back with the results.
Unfortunately, some other browsers such as Firefox and Edge, as well as the macOS and Linux OSs, do not come with their own versions of this built-in tool. Instead, you’ll have to run a malware scan using the antivirus software on your computer.
3. Disable Your Browser’s Extensions
Your browser’s extensions may also become infected and interfere with requests and server communication. That’s why you may also want to disable them. You can do this by opening Chrome’s menu and going to Settings > Extensions:
On the Extensions page, you can disable each one by clicking on the corresponding toggle switch.
You can also delete unused or outdated extensions via the Remove button:
Again, this process will vary slightly depending on your browser. The goal is to remove or disable each extension manually and then check to see if that resolves the HTTP 304 issue.
Then, you can try turning them back on one by one.
4. Flush the DNS and Reset the TCP/IP
If the problem hasn’t been resolved at this point, there could be an issue with the DNS settings. For example, using an outdated IP address might cause an HTTP 304 status code.
Therefore, another approach to try is flushing the DNS and resetting the TCP/IP.
With Chrome, you can flush the browser DNS by entering “chrome://net-internals/#dns” into a new tab.
Hit Enter, and then click on the Clear host cache button:
You can also flush the DNS and reset the TCP/IP in your OS. If you need detailed guidance, you can refer to our tutorial on How to Flush DNS Cache (Windows, Mac, Chrome).
5. Try Using the Google Public DNS
Another potential cause is an incorrect DNS address. Therefore, it’s worth using the Google Public DNS to see if that resolves the problem.
On Windows, you can do this by pressing the Win + R keys. In the Run window that appears, type “ncpa.cpl” into the command box, and then hit Ok.
In the Network Connections window that opens next, locate the network connection you’re using and right-click on it. Next, select Properties:
From there, double-click on Internet Protocol Version 4:
Select the option to “Use the following DNS server addresses”, then enter the value “8.8.8.8” under Preferred and “8.8.4.4” under Alternate:
When you’re done, click on Ok. Then restart your system, and try accessing the website again.
To change your DNS server settings using macOS, you would go to Apple > System Preferences > Network:
In the window that opens, select your connection, then click on Advanced followed by the DNS tab:
Click the + icon next to the IPv4 or IPv6 addresses, to replace the existing addresses with the Google Public IPs.
For further instructions or for guidance on using Google Public DNS on a Linux or another OS, check out Google’s own DNS guide.
6. Check Your Server Configuration Files for Incorrect Redirect Instructions
An HTTP 304 Not Modified status code can occur due to both server- and client-related problems. If none of the methods we’ve covered so far have corrected the issue, your server configuration files may be at fault. For example, it’s possible that there are incorrect redirect instructions present.
The process for checking your server configuration files depends on whether you’re using Nginx or Apache.
At Kinsta, we use the Nginx web server. So if you’re a Kinsta user, you won’t have access to the .htaccess file that Apache users do.
However, you can still perform similar functions. For example, after logging in to MyKinsta, you can check the Analytics > Response section of the dashboard for a breakdown of response codes and redirects:
You can also check the error logs. If you have a specific question or request about editing the configuration files, your best bet is to reach out to our support team.
If your server is running on Apache, then you’ll want to look for the .htaccess file in the root directory of your site. You can do this by logging into the File Manager for your hosting account, and navigating to the public_html folder.
Once you open that file, look for a mod_cache module section. It should look something like this:
LoadModule cache_module modules/mod_cache.so
<IfModule mod_cache.c>
LoadModule cache_disk_module modules/mod_cache_disk.so
<IfModule mod_cache_disk.c>
CacheRoot "c:/cacheroot"
CacheEnable disk "/"
CacheDirLevels 5
CacheDirLength 3
</IfModule>
# When acting as a proxy, don't cache the list of security updates
CacheDisable "http://security.update.server/update-list/"
</IfModule>
We don’t recommend deleting anything, as that can cause severe damage. Instead, you can try temporarily commenting out the cache section by adding a “#” symbol at the beginning of each line.
After you save your changes, check to see if this resolved the HTTP 304 status code.
Don’t let an HTTP 304 status code stand in the way of your site ❌ Find all the troubleshooting tricks you need in this in-depth guideClick to Tweet
Summary
300s redirection codes are used to improve page speed and performance. Unfortunately, when a server or browser isn’t properly configured, communication between the two can get interrupted and result in an HTTP 304 not modified status code. There are six methods you can use to fix it, specifically:
- Clearing your browser’s cache data.
- Running a malware scan.
- Disabling your browser extensions.
- Flushing the DNS and resetting the TCI/IP.
- Trying the Google Public DNS.
- Checking your server configuration files for incorrect redirect instructions.
Get all your applications, databases and WordPress sites online and under one roof. Our feature-packed, high-performance cloud platform includes:
- Easy setup and management in the MyKinsta dashboard
- 24/7 expert support
- The best Google Cloud Platform hardware and network, powered by Kubernetes for maximum scalability
- An enterprise-level Cloudflare integration for speed and security
- Global audience reach with up to 35 data centers and 275 PoPs worldwide
Test it yourself with $20 off your first month of Application Hosting or Database Hosting. Explore our plans or talk to sales to find your best fit.
The other night I was searching «Best Pasta Dish Recipes» on Google.
I clicked the first link and was stopped by the dreaded error code.
I’m willing to bet something similar has happened to you, at one point or another.
When that happens, it’s not just my brain experiencing technical difficulties.
These error codes are HTTP status codes. If you receive an error code, something went wrong when your browser requested the information from a web server. An HTTP status code is sent every time you go to a new web page. However, you’ll only see them if something isn’t right.
For marketers, it’s important to discover and fix these issues so your website visitors don’t have a negative experience.
Below, let’s review what an HTTP 304 not modified status code is, and what’s causing it.
An HTTP 304 not modified status code means that the website you’re requesting hasn’t been updated since the last time you accessed it. Typically, your browser will save (or cache) web pages so it doesn’t have to repeatedly download the same information. This is an attempt to speed up page delivery. However, if this happens to your site, visitors could be prevented from accessing your web pages.
When you click on a web page or URL, your browser requests access to it from a web server. If it has not been modified since the last time you accessed it, the web server will send back a 304 not modified status code, which lets your browser know to use a cached version of the web page.
Usually, you’ll only see this error code if you’re on a search engine because search engines index and cache websites.
If your browser receives this code, it’ll try to show you a saved version of the page. But sometimes it might prevent you from accessing the URL because it’s outdated.
As a marketer, you could lose out on traffic and leads if visitors are prevented from seeing your site.
So, what causes a 304 not modified code?
Causes of an HTTP 304 Not Modified Status Code
If a user sees a 304 not modified status code on your site, there isn’t much you can do. This is because the problem is most likely on their side of the screen.
Users could receive a 304 not modified status code for a variety of reasons:
1. You have a virus.
If you have a virus or malware on your computer, it most likely has corrupted your browser. This could impact your browser’s ability to communicate with web servers and cache web pages.
2. You’ve recently installed or uninstalled software.
Sometimes when you install or uninstall software on your computer, the registry could become corrupt. Again, this impacts your browser.
3. An application has corrupted files.
If there are corrupted files related to your internet browser, it will impact its ability to save web pages and update information.
How to Fix a 304 Not Modified Status Code
Although marketers can’t do much if a user sees a 304 not modified status code, users can try a few things to get the web page to show up on their browser.
1. Clear browsing data.
Clearing your browsing data will make sure your cache is cleared so it can try to access the URL you’re requesting.
To clear your browsing data, go to your History and then click «Clear browsing data.» In Chrome, it looks like this:
Once you click that, make sure you check off all three options. Then, you’ll want to change the time frame to «All Time.» It should look like this:
2. Run cleaners to get rid of viruses and malware.
A 304 not modified code could be happening because your browser is corrupted with a virus or malware. Run a check to make sure that isn’t the issue and clean up your computer.
3. Disable extensions.
There could be something wrong with your extensions. For example, they could be corrupt, which impacts your browser’s ability to receive information. Disable your extensions to see if this is the issue.
If these things don’t work, fixing a 304 not modified can be a more technical process. You might consider asking a web developer or someone in IT to take a look.
If you receive an HTTP 304 not modified error code, it’s because the URL you requested has outdated information. To fix it, you’ll want to double-check that the error isn’t on your side — the client’s — but instead on the server-side.
Код ошибки 304 является одним из многих кодов состояния, которые указывают на проблему связи между браузером пользователя и сервером веб-сайта. Эта ошибка на веб-портале может привести к полной блокировке доступа к контенту. Статья поможет разобраться, что такое ошибка HTTP 304 (Not Modified), какие сбои она может вызывать в работе компьютера. Также здесь указано пошаговое руководство по избавлению от ошибки 304.
Содержание
- О чем говорит ошибка 304?
- Почему возникает ошибка 304?
- Что делать, когда возникает ошибка 304?
- Проверяем правильность ссылки на страницу
- Чистим кэш браузера
- Выключаем расширения
- Сбрасываем данные кэша DNS
О чем говорит ошибка 304?
304 ошибка сервера означает, что запрашиваемый веб-сайт не обновлялся с момента последнего обращения к нему. Как правило, браузер сохраняет (или кеширует) веб-страницы, поэтому ему не нужно повторно загружать одну и ту же информацию. Это попытка ускорить доставку содержимого. Однако, если это произойдет с сайтом, посетители могут не получить доступ к веб-страницам.
Почему возникает ошибка 304?
Пользователь может получить ошибку “304 неизмененный код состояния” по разным причинам:
- Если на компьютере есть вирус или вредоносная программа, скорее всего, они повредили браузер. Это может повлиять на его способность взаимодействовать с веб-серверами и кэшировать веб-страницы.
- Когда пользователь устанавливает или удаляет программное обеспечение на своем компьютере, реестр может быть поврежден. Опять же, это влияет на браузер.
- Если с интернет-браузером связаны поврежденные файлы, это повлияет на его способность сохранять веб-страницы и обновлять информацию.
Эта ошибка может быть связана с проблемой на сервере или на стороне клиента, поэтому для ее диагностики и устранения может потребоваться ручное вмешательство пользователя.
Что делать, когда возникает ошибка 304?
Методы, которые можно использовать для устранения ошибки, варьируются от простых до технически сложных. Поисковые системы отвечают за индексацию и кеширование веб-страниц, поэтому эту проблему обычно можно проследить до браузера, используемого для доступа к веб-странице. Коды перенаправления HTTP 304 используются для повышения скорости и производительности страницы. К сожалению, если сервер или браузер настроены неправильно, связь между ними может быть нарушена, что приведет к ошибке HTTP 304.
Методы, которые можно использовать для устранения ошибки 304:
Проверяем правильность ссылки на страницу
Часто ошибка появляется из-за того, что URL-адрес был введен неправильно. Поэтому необходимо проверить правильность введенной строки, если она известна, исправить опечатки и попытаться перейти снова. Если ошибка все же остается, можно использовать быстрый поиск в Google или Yandex, возможно, он приведет на нужную страницу.
Чистим кэш браузера
Очистка данных кеша может помочь получить доступ к нужному URL-адресу. Инструкции по выполнению этого процесса различаются в зависимости от используемого браузера.
Очистить кеша браузера для Google Chrome:
- Нажать на значок трех точек в правом верхнем углу окна браузера.
- Войти в параметры «Дополнительные инструменты».
- Выбрать «Очистить данные просмотра» в подменю.
Очистка кеша браузера для Mozilla Firefox:
- Нажать значок гамбургера в правом верхнем углу.
- Выбрать “История”.
- В меню шелкнуть “Очистить недавнюю историю”.
- В списке “Диапазон времени для очистки” выбрать “Все”.
- Установить флажок Кэш, чтобы не удалять важные данные просмотра.
- Нажать “Очистить сейчас”.
Очистка кеша браузера для Safari:
- Включить меню “Разработка”.
- Выбрать “Настройки”, далее “Дополнительно”.
- Отметить “Показать меню разработки в строке меню”.
- Перейти в “Разработка”.
- Очистить кеш.
Как очистить кеш браузера для Internet Explorer:
- Щелкнуть значок шестеренки в правом верхнем углу, чтобы открыть меню “Инструменты”.
- Найти “Безопасность”.
- Выбрать только временные файлы интернета и файлы веб-сайтов, чтобы не удалять важную информацию.
- Нажать кнопку “Удалить”.
Очистка кеш браузера для Microsoft Edge:
- Нажать значок с тремя точками в правом верхнем углу окна браузера.
- Щелкнуть “Выбрать, что очистить”.
- Выбрать только поле “Кэшированные данные и файлы”, чтобы не удалять важную информацию.
Как очистить кеш браузера для Opera:
- Щелкнуть значок Operа в верхнем левом углу.
- Найти параметр “Дополнительные инструменты”.
- Выбрать “Очистить данные просмотра” в подменю.
Выключаем расширения
Расширения браузера также могут быть заражены и нарушать отправку запросов или вмешиваться в связь с сервером. В этом случае можно отключить их. Для этого необходимо:
- Открыть меню Chrome
- Выбрать “Настройки”, далее “Расширения”.
- Деактивировать каждое из них, щелкнув соответствующий тумблер.
Также можно удалить неиспользуемые или устаревшие расширения, нажав кнопку «Удалить». Этот процесс будет немного отличаться в зависимости от браузера. Цель состоит в том, чтобы вручную удалить или отключить каждое расширение, а затем посмотреть, решит ли это проблему HTTP 304. Дальше можно попробовать включить их по одному.
Сбрасываем данные кэша DNS
Если проблема не решилась с помощью предыдущих пунктов, то, возможно, она связана с настройками DNS. Например, использование устаревшего IP-адреса может вызвать ошибку HTTP 304. Еще один способ попробовать – очистить DNS и сбросить TCP/IP.
В Chrome можно очистить DNS браузера:
- Ввести «chrome: //net-internals/#dns» в новой вкладке.
- Нажать Enter.
- Затем кнопку Clear Host Cache.
Также можно очистить DNS и сбросить TCP / IP в своей операционной системе. Другая возможная причина ошибки – неправильный адрес DNS. Поэтому стоит использовать Google Public DNS, чтобы посмотреть, решит ли он проблему.
В Windows можно сделать это так:
- Нажать Win + R клавиши.
- В Run окне, которое появляется, требуется ввести “ncpa.cpl” в поле команды.
- Нажать кнопку OK.
- В следующем открывшемся окне “Сетевые подключения” найти используемое подключение и щелкнуть на него правой кнопкой мыши.
- Выбрать “Свойства”, оттуда дважды щелкнуть “Internet Protocol Version 4”.
- Кликнуть на вариант “Использовать следующие адреса DNS-серверов”.
- Ввести значение «8.8.8.8.8» в разделе “Предпочтительный” и 8.8.4.4 в графу “Альтернативный”.
- Нажать ОК.
- Далее требуется перезагрузить систему и попробовать снова получить доступ к веб-сайту.
Чтобы изменить настройки DNS-сервера в macOS, нужно:
- Перейти в Apple.
- Выбрать “Системные настройки”.
- Нажать “Сеть”.
- В открывшемся окне выбрать свое подключение.
- Нажать “Дополнительно”.
- Выбрать DNS.
- Нужно щелкнуть символ + рядом с адресами IPv4 или IPv6, чтобы заменить существующие адреса общедоступными IP-адресами Google.
Для получения дополнительных инструкций или совета по использованию Google Public DNS в Linux или другой операционной системе лучше ознакомиться с собственным руководством Google по DNS.
Ошибка 304 Not Modified может возникать как из-за проблем, связанных с сервером, так и с клиентом. Если ни один из методов, рассмотренных ранее, не помог решить проблему, возможно, файлы конфигурации сервера пользователя повреждены или имеется неверная информация о переадресации. Ошибка сервера может заблокировать доступ ко всему контенту, а это значит, что понимание того, как ее исправить, имеет большое значение. В этом руководстве представлены причины и методы, которые позволяют как можно быстрее вернуть все в норму.
Any ideas why on some links that I try to access using HttpWebRequest I am getting «The remote server returned an error: (304) Not Modified.» in the code?
The code I’m using is from Jeff’s post here (the page seems to have disappeared, see an archive copy at the Wayback Machine).
Note the concept of the code is a simple proxy server, so I’m pointing my browser at this locally running piece of code, which gets my browsers request, and then proxies it on by creating a new HttpWebRequest, as you’ll see in the code. It works great for most sites/links, but for some this error comes up. You will see one key bit in the code is where it seems to copy the http header settings from the browser request to it’s request out to the site, and it copies in the header attributes. Not sure if the issue is something to do with how it mimics this aspect of the request and then what happens as the result comes back?
case "If-Modified-Since":
request.IfModifiedSince = DateTime.Parse(listenerContext.Request.Headers[key]);
break;
I get the issue for example from http://en.wikipedia.org/wiki/Main_Page
PS. UPDATE HERE
Still can’t work this out. Basically I can identify 1 link which has an issue, and it seems to work fine, 2nd time it gets the error, 3rd time OK, 4th time gets the error, 5th time OK etc. As if there is some state not getting cleared or something in the code. I’ve tried to clean up the code a bit using «using» type statements etc.
Here’s the code. If anyone can spot why every 2nd time I browse to a link like http://newsimg.bbc.co.uk/css/screen/1_0_16/nol/v4/story.css (starting at the 2nd time, not the first) via this proxy code I get the error I’d love to hear.
class Program
{
static void Main(string[] args)
{
Proxy p = new Proxy(8080);
Thread proxythread = new Thread(new ThreadStart(p.Start));
proxythread.Start();
Console.WriteLine("Proxy Started. Press Any Key To Stop...");
Console.ReadKey();
p.Stop();
}
}
public class Proxy
{
private HttpListener _listener;
private int _port;
public Proxy(int port)
{
int defaultport = 8080;
// Setup Thread Pool
System.Threading.ThreadPool.SetMaxThreads(50, 1000);
System.Threading.ThreadPool.SetMinThreads(50, 50);
// Sanitize Port Number
if (port < 1024 || port > 65535)
port = defaultport;
// Create HttpListener Prefix
string prefix = string.Format("http://*:{0}/", port);
_port = port;
// Create HttpListener
_listener = new HttpListener();
_listener.Prefixes.Add(prefix);
}
public void Start()
{
_listener.Start();
while (true)
{
HttpListenerContext request = null;
try
{
request = _listener.GetContext();
// Statistics (by Greg)
int availThreads = -1;
int compPortThreads = -1;
ThreadPool.GetAvailableThreads(out availThreads, out compPortThreads);
log("INFO", request.Request.Url.ToString(), "START - [" + availThreads + "]");
ThreadPool.QueueUserWorkItem(ProcessRequest, request);
}
catch (HttpListenerException ex)
{
log("ERROR", "NA", "INFO: HttpListenerException - " + ex.Message);
break;
}
catch (InvalidOperationException ex)
{
log("ERROR", "NA", "INFO: InvalidOperationException - " + ex.Message);
break;
}
}
}
public void Stop()
{
_listener.Stop();
}
private void log(string sev, string uri, string message)
{
Console.Out.WriteLine(Process.GetCurrentProcess().Id + " - " + sev + " (" + uri + "): " + message);
}
private void ProcessRequest(object _listenerContext)
{
#region local variables
HttpWebRequest psRequest; // Request to send to remote web server
HttpWebResponse psResponse; // Response from remote web server
List<byte> requestBody = new List<byte>(); // Byte array to hold the request's body
List<byte> responseBody = new List<byte>(); // Byte array to hold the response's body
byte[] buffer;
string uri = "";
#endregion
var listenerContext = (HttpListenerContext)_listenerContext;
uri = listenerContext.Request.Url.ToString().Replace(string.Format(":{0}", _port), "");
// Create Interent Request
HttpWebRequest internetRequest = (HttpWebRequest)WebRequest.Create(uri);
#region Build Request Up
internetRequest.Method = listenerContext.Request.HttpMethod;
internetRequest.ProtocolVersion = listenerContext.Request.ProtocolVersion;
internetRequest.UserAgent = listenerContext.Request.UserAgent;
foreach (string key in listenerContext.Request.Headers.AllKeys)
{
try
{
switch (key)
{
case "Proxy-Connection":
case "Connection":
internetRequest.KeepAlive = (listenerContext.Request.Headers[key].ToLower() == "keep-alive") ? true : false;
break;
case "Content-Length":
internetRequest.ContentLength = listenerContext.Request.ContentLength64;
break;
case "Content-Type":
internetRequest.ContentType = listenerContext.Request.ContentType;
break;
case "Accept":
internetRequest.Accept = listenerContext.Request.Headers[key];
break;
case "Host":
break;
case "Referer":
internetRequest.Referer = listenerContext.Request.Headers[key];
break;
case "If-Modified-Since":
internetRequest.IfModifiedSince = DateTime.Parse(listenerContext.Request.Headers[key]);
break;
default:
internetRequest.Headers.Add(key, listenerContext.Request.Headers[key]);
break;
}
}
catch (Exception ex)
{
Console.WriteLine("Error settup up psRequest object. Error = " + ex.Message + "n" + ex.StackTrace);
}
}
#endregion
#region Copy content into request
buffer = new byte[1024];
using (Stream instream = listenerContext.Request.InputStream)
{
int incount = instream.Read(buffer, 0, buffer.Length);
while (incount > 0)
{
internetRequest.GetRequestStream().Write(buffer, 0, incount);
incount = instream.Read(buffer, 0, buffer.Length);
}
}
#endregion
// Get Internet Response
HttpWebResponse internetResponse = null;
try
{
using (internetResponse = (HttpWebResponse)internetRequest.GetResponse())
{
#region Configure Local Response Header Keys
foreach (string key in internetResponse.Headers.Keys)
{
try
{
switch (key)
{
case "Transfer-Encoding":
listenerContext.Response.SendChunked = (internetResponse.Headers[key].ToLower() == "chunked") ? true : false;
break;
case "Content-Length":
listenerContext.Response.ContentLength64 = internetResponse.ContentLength;
break;
case "Content-Type":
listenerContext.Response.ContentType = internetResponse.Headers[key];
break;
case "Keep-Alive":
listenerContext.Response.KeepAlive = true;
break;
default:
listenerContext.Response.Headers.Add(key, internetResponse.Headers[key]);
break;
}
}
catch (Exception ex)
{
log("ERROR", uri, "Error settup up listenerContext.Response objects. Error = " + ex.Message + "n" + ex.StackTrace);
}
}
#endregion
try
{
// Transfer the body data from Internet Response to Internal Response
buffer = new byte[1024];
using (Stream inputStream = internetResponse.GetResponseStream())
{
int outcount = inputStream.Read(buffer, 0, buffer.Length);
while (outcount > 0)
{
listenerContext.Response.OutputStream.Write(buffer, 0, outcount);
outcount = inputStream.Read(buffer, 0, buffer.Length);
}
}
}
catch (Exception ex)
{
log("ERROR", uri, "Could not obtain response from URI: " + ex.Message);
}
finally
{
listenerContext.Response.OutputStream.Close();
}
}
}
catch (Exception ex)
{
//if (ex is InvalidOperationException ||
// ex is ProtocolViolationException ||
// ex is WebException)
//{
// log(uri, "Could not successfully get response: " + ex.GetType() + " - " + ex.Message);
// listenerContext.Response.Close();
// return;
//}
//else { throw; }
log("ERROR", uri, "Could not successfully get response: " + ex.GetType() + " - " + ex.Message);
listenerContext.Response.Close();
}
}
}
And here is an example of what I see — first hit is good, 2nd has error…
Proxy Started. Press Any Key To Stop...
2080 - INFO (http://newsimg.bbc.co.uk:8080/css/screen/1_0_16/nol/v4/story.css): START - [50]
2080 - INFO (http://newsimg.bbc.co.uk:8080/css/screen/1_0_16/nol/v4/story.css): START - [50]
2080 - ERROR (http://newsimg.bbc.co.uk/css/screen/1_0_16/nol/v4/story.css): Could not successfully get response: System.Net.WebException - The remote server returned an error: (304) Not Modified.
The HTTP 304 not modified error is a status code that indicates that that the requested resource has not been modified since the previous transmission.
As a part of our Server Management Services, we help our Customers to fix HTTP related errors regularly.
Let us today discuss the possible causes and fixes for this error.
What is 304 not modified error?
The 304 error indicates a communication problem between a user’s browser and server.
This message tells the browser that the resources cached in the browser have not been modified since the previous transmission. Thus there is no need to retransmit the requested resource to the client again. As a result, the browser displays a cached version of the web page.
Sometimes, this status code is shown when if it is not supposed to return this result. It can happen in the following cases:
- Server configuration or Domain Name Server (DNS) issues
- Infected or corrupted cached resource
How to fix the 304 not modified error?
Let us now look at some potential measures that may help us to resolve this error message.
Check server configurations and redirects
The 304 response codes could trigger due to incorrect redirect instruction present in the server configuration. For the Apache web server, it would be a good idea to cross-check the redirect rules in the .htaccess.
Check for the line starting with “mod_cache” in this file. We can try commenting out those lines to see if it fixes this error. Also, look for similar redirect codes in the Apache configuration file under mod_cache.c section like the one given below:
LoadModule cache_module modules/mod_cache.so
<IfModule mod_cache.c>
LoadModule cache_disk_module modules/mod_cache_disk.so
<IfModule mod_cache_disk.c>
CacheRoot "c:/cacheroot"
CacheEnable disk "/"
CacheDirLevels 5
CacheDirLength 3
</IfModule>
# When acting as a proxy, don't cache the list of security updates
CacheDisable "http://security.update.server/update-list/"
</IfModule>
For Nginx websites, look for the expires directive within the nginx.conf file. This define when the cached versions should be refreshed from the server. A sample one looks like:
map $sent_http_content_type $expires {
default off;
text/html 24h;
text/css 24h;
application/javascript max;
~image/ max;
}
server {
listen 80;
listen 443 ssl;
server_name www.example.com;
expires $expires;
}
We could temporarily disable this directive by commenting out those lines.
Using a Public DNS
The 304 error can happen due to an incorrect DNS address. Thus a possible method to fix this error would be to use the Google Public DNS.
On Windows, we can perform it from the Network connections window. Here, locate the network connection you’re using and right-click on it.
Next, select Properties and double-click on Internet Protocol Version 4.
Select the option to “Use the following DNS server addresses”, then enter the value “8.8.8.8” under Preferred and “8.8.4.4” under Alternate. Finally, we need to restart the system to apply the changes.
Sometimes, flushing the DNS cache can help also help us to fix this error
Perform a malware scan
Corrupted browsers are another common factor that may trigger this error. Thus it is recommended to run a malware scan on the browser if we unexpectedly receive the 304 status code.
Windows version of Chrome has a Malware Scanner and Cleanup Tool that comes built-in. The cleanup can be performed from the URL “chrome://settings/cleanup”.
Hit Enter, and then next to Find and remove harmful software click on the Find button. The scanner will begin running, then report back with the results.
For other browsers, we may use an antivirus program in the server to perform the scan as they do not have an inbuilt one.
It is possible for the browser’s extensions to become infected and interfere with requests and server communication. Thus we could also try disabling them to see if it fixes the error.
We could also try clearing the browser cache as it helps us to sort out this problem at times.
Debug Application Code
Another possible reason for this error is some custom code within the application. We may need to manually debug the application, along with parsing through application and server logs.
[Need any further assistance in fixing HTTP errors? – We’re available 24*7]
Conclusion
In short, HTTP 304 not modified error is a status code that indicates that that the requested resource has not been modified since the previous transmission. Today, we saw how our Support Engineers fix this error.
PREVENT YOUR SERVER FROM CRASHING!
Never again lose customers to poor server speed! Let us help you.
Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.
GET STARTED
var google_conversion_label = «owonCMyG5nEQ0aD71QM»;
Status Code 304: «Not Modified»
HTTP Status Code 304: «Not Modified»
The 304 «Not Modified» response is returned when a file is unchanged on the server since it was last accessed.
304s are used to speed up a user’s browsing experience. If the page they are accessing hasn’t been changed since they last got there, the client will show the user the cached version, stored locally, and won’t need to request the files on the website’s server.
Browsers and bots will make requests and they have an “If-Modified-Since” header, if the file has not been modified since then, the request won’t be fulfilled.
This is kind of response is mostly used for crawl path optimization for very large sites, 100,000+ pages.
Most small websites don’t need this, but if you’re a massive site, this can be a very large technical optimization win that makes the experience faster for users, and minimizes the number of requests your server has to fulfill. This also helps Google and other search engines crawl your pages.
By returning a 304 Not Modified header, you can save some of your crawl budget, and allocate it towards other pages that Google hasn’t seen yet.
Using 304s gets more valuable the more pages you have in the search index. The larger a website is, the more valuable a 304 response becomes.
If you have less than 1,000, or possibly even 10,000 pages, this may not be as useful to you.
The HTTP Protocol
Let’s talk about how the HTTP protocol works.
At its very foundation, the Internet is made up of two core things: clients and servers.
Any time you click on your browser, you are accessing the Internet through a web client. It may be Chrome, Firefox, Safari or Internet Explorer.
When you visit a website, you are making a request to a web server.
Facebook.com, ClickMinded.com, MarthaStewart.com/1525880/marthas-chocolate-chip-cookies, all of these sites have their own home address. It’s called an IP address.
Your home address might be 123 Main Street, New York, NY 10001, and Facebook’s address happens to be 66.220.144.0.
Whenever you visit a page on the web, you are requesting a whole bunch of documents from that website’s server. Maybe those documents are HTML, CSS, images, a PDF—whatever it is, the basic relationship stays the same: you (the client), make a request, and the website (the server) responds to that request.
The language you are using to make these requests is called the HTTP protocol. These protocols are really just standards that everyone on the web has agreed to. Just like English, Spanish and Chinese are all languages that have an understood protocol, HTTP is just a bunch of standards and an understood protocol.
There are a number of different web protocols out there – and you might be familiar with some of them:
- DNS – Domain Name System
- FTP – File Transfer Protocol
- HTTP – Hypertext Transfer Protocol
- IRC – Internet Relay Chat Protocol
- SMTP – Simple Mail Transfer Protocol
- SSL – Secure Sockets Layer
HTTP Status Codes
Now that we understand what the HTTP protocol is, let’s talk about HTTP status codes. Status codes let us know whether the HTTP request was a success, a failure, or something in between.
Let’s take a look at the five core status codes:
- 1xx block: informational requests
- 2xx block: successful requests
- 3xx block: redirects
- 4xx block: client errors
- 5xx block: server errors
Some status codes are more common than others. For example, when you’re doing digital marketing, you’ll often come across status code 200, status code 301 and status code 404 — but you may never see status code 206 or 307.
Let’s briefly go over each status code block and what they mean.
1xx Status Codes
These are informational requests. The server hasn’t fully completed the request yet and it’s still processing the information. You will not see these codes often. They include:
- 100 – Continue
- 101 – Switching protocol
- 103 – Checkpoints
2xx Status Codes
These are successful requests, which means everything is okay. They include:
- 200 – OK (you will see this one the most)
- 201 – Created
- 202 – Accepted
- 205 – Reset Content
- 206 – Partial Content
3xx Status Codes
These are redirects. These are shown when you request an address, but you are sent somewhere else. These can be good or bad. They include:
- 301 – Moved Permanently
- 302 – Found
- 304 – Not Modified
- 305 – Use Proxy
- 307 – Temporary Redirect
4xx Status Codes
These are client errors. That means something went wrong with the request (client/user) and not the response (website/server). They include:
- 400 – Bad Request
- 401 – Unauthorized
- 403 – Forbidden
- 404 – Not Found
- 408 – Request Timeout
- 410 – Gone
- 429 – Too Many Requests
5xx Status Codes
These are server errors. That means something went wrong with the response (website/server) and not the request (client/user). They include:
- 500 – Internal Server Error
- 502 – Bad Gateway
- 503 – Service Unavailable
- 504 – Gateway Timeout
In Conclusion
Looking for more on a particular status code? We have a series of short guides on every HTTP response, so you can optimize your digital marketing strategy. Grab them here:
- The Complete Status Code Guide
- Status Code 200, Status Code 301, Status Code 302, Status Code 304
- Status Code 401, Status Code 403, Status Code 404, Status Code 410
- Status Code 429, Status Code 500, Status Code 503, Status Code 504
10x Your Traffic from Google.
Get the SEO Checklist sent to your inbox.
[Free Mini-Course] Learn the SEO strategy that we used at PayPal and Airbnb.
Get the EXACT framework you need to implement to get your SEO strategy rock-solid for the rest of year.
Learn the exact SEO Keyword Strategy that we used at PayPal and Airbnb.
Reserve your spot at this special free SEO Masterclass!
SEO training to 10x your traffic from Google.
ClickMinded is where 8,702 startups, agencies, entrepreneurs and students learn SEO, get higher rankings, and more traffic.
Massively grow any business with digital marketing SOPs.
The ClickMinded SOP Library is a collection of digital marketing strategy templates, with step-by-step instructions that you can use to grow any website.
Thank you for being a part of the ClickMinded family!