406 Клиентский веб-браузер не принимает MIME-тип запрошенной страницы

Обновлено: 21.11.2024

В следующей статье обсуждается значение кодов ошибок, которые могут отображаться в окне браузера. Когда возникает проблема с загрузкой веб-страницы, код ошибки и сообщение появляются в браузере вместо веб-страницы. Код ошибки и отображаемое сообщение зависят от типа ошибки. Обычно код ошибки состоит из 3-4-значного числа и краткого сообщения с описанием ошибки. Ниже вы найдете список распространенных кодов ошибок и некоторые предложения по их устранению.

Ниже приводится описание наиболее распространенных сообщений об ошибках:

Ниже приведен полный список сообщений об ошибках клиента и сервера:

4xx — ошибка клиента
Ошибка клиента — это ошибка, возникающая на компьютере пользователя. Например, пользователь может запросить несуществующую страницу или не предоставить действительную информацию для аутентификации.

< td data-label="" style="text-align: left;">Запрошенный диапазон не соответствует требованиям.
Код Сообщение
400< /td> Неверный запрос.
401 Отказано в доступе. IIS определяет ряд различных ошибок 401, которые указывают на более конкретную причину ошибки. Эти конкретные коды ошибок отображаются в браузере, но не отображаются в журнале IIS:
401.1 Ошибка входа в систему.
401.2 Ошибка входа в систему из-за конфигурации сервера.
401.3 Неавторизовано из-за ACL на ресурсе.
401.4 Авторизация не выполнена фильтром.
401.5 Ошибка авторизации приложением ISAPI/CGI.
401.7 Доступ запрещен политикой авторизации URL на веб-сервере. Этот код ошибки характерен для IIS 6.0.
403 Запрещено. IIS определяет ряд различных ошибок 403, которые указывают на более конкретную причину ошибки:
403.1 Выполнение доступа запрещено.
403.2 Чтение запрещено.
403.3 Запрещен доступ на запись.
403.4 Требуется SSL.
403.5 Требуется SSL 128.
403.6 IP-адрес отклонен.
403.7 Клиент требуется сертификат.
403.8 Доступ к сайту запрещен .
403.9 Слишком много пользователей.
403.10 Неверная конфигурация.
403.11 Смена пароля.
403.12 Mapper отказал в доступе.
403.13 Сертификат клиента отозван.
403.14 Внесение в список каталогов отклонено.
403.15 Превышено количество клиентских лицензий.
403.16 Сертификат клиента ненадежен или недействителен.
403.17 Сертификат клиента e истек или еще не действителен.
403.18 Невозможно выполнить запрошенный URL в текущем пуле приложений. Этот код ошибки характерен для IIS 6.0.
403.19 Невозможно выполнить CGI для клиента в этом пуле приложений. Этот код ошибки характерен для IIS 6.0.
403.20 Не удалось войти в систему с помощью паспорта. Этот код ошибки характерен для IIS 6.0.
404 Не найдено.
404.0 (Нет) — Файл или каталог не найден.
404.1 Веб-сайт недоступен на запрошенном порту.
404.2 Политика блокировки расширения веб-службы запрещает этот запрос.
404.3 Политика карты MIME запрещает этот запрос.
405 Глагол HTTP, используемый для доступа к этой странице, не разрешен (метод не разрешен.)
406 Клиентский браузер не принимает тип MIME запрошенной страницы.
407< /td> Требуется прокси-аутентификация.
412 Не удалось предварительное условие.
413 Слишком большой объект запроса.
414 URI запроса слишком длинный.
415 Неподдерживаемый тип носителя.
416
417 Ошибка выполнения.
423 Ошибка блокировки.

Ошибка сервера – это ошибка, возникающая на сервере при запросе страницы в браузере. Сервер не может выполнить запрос из-за ошибки.

Дополнительную информацию о менее распространенных кодах ошибок и сообщениях можно найти на веб-сайте Microsoft.

Ответ «Ошибка 406 — неприемлемо» встречается не так часто, как «404-Страница не найдена», но иногда возникает и должен быть исправлен.

Что вызывает ошибку 406

Если бы мы писали простым языком, это было бы примерно так: «Здравствуйте, меня зовут браузер. Я хотел бы узнать больше о вашей странице. Пожалуйста, пришлите информацию в ответ. Я принимаю такие-то и такие-то форматы».
Если возвращается ответ «Ошибка 406 — неприемлемо», это означает, что браузер не поддерживает формат, отправленный сервером, или запрос нарушает некоторые настройки.

Принять заголовки, которые обычно вызывают ошибку 406

Accept-Charset и Accept-Language

Набор символов — это метод, с помощью которого таблицы преобразуют код в удобочитаемые символы. В основном он охватывает языки и символы.

В начале времени широко используемой таблицей был ASCII. Однако ASCII не включает символы, используемые во многих странах. Необходимость расшифровки таких символов потребовала перехода на более широкую таблицу. В настоящее время стандартом является ISO-8859 для поддержки международных символов и алфавитов, хотя этот список включает гораздо больше.

Принять кодировку

Принять-диапазоны

В запросе можно указать, что в ответ должны быть включены только данные в пределах определенного диапазона байтов. В этом случае будет возвращена только часть того, что есть в наличии.
Также может случиться так, что сервер установил параметры безопасности, которые нарушает запрос, Mod_security, программа брандмауэра, работающая на сервере Apache.

Исправление ошибки 406 — неприемлемо

При возникновении ошибки 406 первыми источниками, которые необходимо исследовать, являются Accept-Headers, либо получая доступ к исходному коду, либо запрашивая их у разработчика.

В связи с тем, что Интернет действительно распространяется по всему миру и предоставляет доступ к самой малоизвестной информации (но при этом интересной и необходимой для искателя), вам необходимо убедиться, что вы настроены так, чтобы вас видели. Если вы считаете, что за такую ​​ошибку ответственны заголовки, отсканируйте свой код и убедитесь, что вы настроены на приемлемые мимы.
В случае, если ответ нарушает настройки безопасности, их можно отключить (хотя они могут быть реализованы по какой-то причине). Во избежание конфликтов рекомендуется проконсультироваться с провайдером.

Если ответ 406 Error- Not Acceptable появился во время работы над WordPress, вы можете получить информацию об исправлениях на этом форуме поддержки.

Ошибка 406 – Not Acceptable происходит нечасто, в основном потому, что современные браузеры принимают символы или данные любого типа. Однако оно может всплыть, и в этом случае запрос останется неудовлетворенным, и в этот день вы засчитаете на одного посетителя меньше.

Остановите ошибки на своем веб-сайте!

InMotion Hosting предлагает надежный хостинг и первоклассную круглосуточную онлайн-поддержку. Нажмите здесь, чтобы получить скидку 47%!

Сервер после получения запроса, в зависимости от заголовка Accept, может вернуть код состояния 406, указывающий, что он не может отправлять данные ни в одном из форматов, указанных в заголовке Accept клиента. Это редко случается в реальной жизни, потому что большинство веб-браузеров примут все, что сигнализируется */* в заголовке Accept запроса. Это крайняя мера, клиенты обычно сигнализируют, какой тип контента они хотят получать, и определяют список приоритетов, */* обычно с самым низким приоритетом (q=0,5). Например, клиент отправляет запрос, потому что в html есть тег img, он сигнализирует серверу, что в первую очередь ожидает изображение. Заголовки Accept могут иметь различные типы (accept-encoding, accept-charset, accept-ranges, accept-language и т. д.), определяющие характеристики принимаемых ими данных. Например, веб-браузер может обрабатывать только файлы HTML или GIF, поэтому, если веб-сервер не сможет вернуть данные в любом из этих форматов, «понимаемых» клиентом, он отобразит код ошибки 406 Not Acceptable. .

Может также произойти и обратное: если веб-сервер не знает расширения запроса, он может искать другое установленное на нем приложение, чтобы узнать, сможет ли оно обслужить файл. Если нет другого приложения, которое может обслужить файл, оно вернет ошибку 406 Not Acceptable. Сервер также вернет 406, если он не уверен в типе MIME запрошенного файла. Это может быть очень полезно, так как может предотвратить утечку конфиденциальной информации, обычно хранящейся в файлах с экзотическими расширениями, такими как .ini, .kdb, .pass и т. д.

Как это исправить?

Учитывая, что код состояния 406 может быть причиной несоответствия согласования типа контента, необходимо внести определенные изменения, чтобы на сервере был тип MIME, связанный с расширением запроса.

Кроме того, вы можете внести изменения в заголовок Accept вашего браузера, чтобы он знал тип MIME, обрабатываемый вашим сервером. Внесение изменений в заголовок Accept также может помочь, однако это менее жизнеспособное решение, чем изменения, сделанные на стороне сервера.

Другой сценарий, в котором вы можете столкнуться с кодом состояния 406, — это когда на сервере Apache включено правило mod_security. Это тип программы брандмауэра веб-приложений (WAF), включенной по умолчанию в учетных записях хостинга некоторых провайдеров веб-хостинга. Например, InMotion Hosting включил mod_security для всех своих учетных записей хостинга на основе Apache для защиты веб-приложений от распространенных атак, таких как XSS или SQL-инъекции, поскольку эти типы дыр в безопасности могут легко проникнуть в веб-приложения. mod_security постоянно сканирует сервер, входящие запросы и исходящие ответы на предмет нарушений установленных им правил. Если происходит действие, нарушающее правила, установленные в mod_security (нарушение, вызванное сайтом, страницей или функцией), сервер отправит ошибку 406 Not Acceptable.

Как это исправить?

Отключение mod_security для каждого из ваших доменов по отдельности или отключение определенных правил в Mod_security поможет исправить ошибку. Если ваша учетная запись хостинга поставляется с cPanel, проще всего отключить mod_security с помощью плагина modsec Manager. Кроме того, вы можете использовать командную строку в SSH. Если вы хотите отключить определенные правила или в вашей учетной записи хостинга нет возможности отключить/включить mod_security, вам необходимо связаться со службой поддержки клиентов вашего веб-хостинга, чтобы сделать это за вас.

Заключение

Дэвид Кросс

Дэвид с самого начала является главным редактором WebHostingMedia. Он страстно любит создавать веб-сайты и управлять ими, а также создавать полезный контент. Он также интересуется программированием — в настоящее время изучает Python.

Это меня смущает и беспокоит, так как я видел, что эта страница работала прошлой ночью, а сейчас она внезапно перестала работать. Мой сайт взломан или какие-либо изменения в обновлении браузера ограничивают политику безопасности?

Агент пользователя может быть локализован для определенной локали или языка, которые сервер не может предоставить. Например, пользовательский агент может использовать заголовок Accept-Languagerequest для указания допустимого французского языка (Accept-Language: fr), но если сервер не может обслужить ответ на французском языке, код 406 может быть единственным правильным ответом.< /блочная цитата>

Агент пользователя может запрашивать определенный тип контента, который должен быть возвращен сервером. Эти типы контента, обычно известные как типы MIME, определяют такие вещи, как обычный текст (текст/обычный), изображения PNG (изображение/png), видео mp4 (видео/mp4) и так далее. Таким образом, клиент может включить заголовок Accept в запрос и определить явный тип MIME, который должен быть предоставлен сервером (например, Accept: application/xml). Если сервер не может ответить с соответствующим типом контента, который был запрошен, может потребоваться ответ 406 Not Acceptable.

Поэтому я начал проверять, какие заголовки запросов отправлял браузер при возникновении ошибки, и см. ниже.

На первый взгляд кажется, что все в порядке. Затем я попытался вызвать ту же страницу без использования AJAX, и, к счастью, это сработало. Это означает, что сайт не должен быть взломан. Это должно быть связано с некоторыми недавними изменениями в ограничениях безопасности на стороне сервера. Я продолжил сравнивать разницу заголовков запроса при вызове через AJAX и обычном вызове.

Самое большое отличие заключается в заголовке Content-Type. В случае ошибки Content-Type — это Application/x-www-form-urlencoded, он устанавливается в коде нашего приложения перед отправкой запроса AJAX. Это допустимый тип контента? После некоторого поиска кажется, что этот тип контента недействителен. Допустимым является application/x-www-form-urlencoded. После обновления кода приложения и перезагрузки страницы см. ниже заголовки запросов.

Похоже, наш поставщик услуг усилил проверку безопасности входящих запросов. Надеюсь, что этот опыт будет полезен для тех, кто столкнулся с той же ошибкой. Вы должны были бы выполнить аналогичные шаги для устранения проблемы, если бы столкнулись с ней.

Читайте также: