Ошибка Not Acceptable (406)

Ошибка Not Acceptable (406)

Ошибка 406

Появляется во время редактирования записей, страниц, товаров и записей др. таксономий. При этом отредактировать контент невозможно.

Текст ошибки выглядит следующим образом:

Not Acceptable
An appropriate representation of the requested resource /wp-admin/post. php could not be found on this server.

Причина появления этой ошибки

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

Если сайт, страница или функция нарушают одно из этих правил, сервер может отправить ошибку 406 Not Acceptable. При этом скрипт/код на вашем сайте абсолютно не является зловредным или опасным для хостинга.

Если у вас на сайте внезапно появилась такая ошибка, то начинайте вспоминать, что вы в последнее время обновляли на сайте и какой код устанавливали.
Ошибка может быть вызвана обновлением плагина, или установкой кода от стороннего сервиса. Например, в сети встречал примеры когда такая ошибка появлялась после установки кода от рекламной сети яндекса, или кода баннеров.

Как исправить эту проблему?

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

2. Откройте файл .htaccess (лежит в корне сайта) и вставьте этот фрагмент кода:

Этот код отключает фильтры брандмауэра ModSecurity по отношению к вашему сайту. Если не помогло, смотрим следующий пункт.

3. Отключаем ModSecurity в панели хостинга CPanel.

Войдите в панель управления, найдите блок Безопасность. Нажмите на ссылку ModSecurity.

Ошибка Not Acceptable (406)

На следующей странице отключите это приложение для всех ваших доменов или для конкретного сайта.

Ошибка Not Acceptable (406)

Занимаешься созданием сайтов? Не пропусти важные новости!

Подпишись на Youtube-канал

Я рассказываю о создании сайтов простым и понятным языком, чтобы даже абсолютный новичок уже завтра смог создать свой первый интернет-магазин.

Подпишись на Telegram-канал

Получай новости на свой телефон — это удобно и быстро!
Новости из мира WordPress, полезные видео о создании сайтов, интересные статьи о разработке и безопасности.

Нюансы настройки публикации web-сервиса 1С 8.2 в Apache и IIS

Возникла необходимость взаимодействовать с 1C с мобильного клиента под Windows Phone 7/8. Самым простым способом взаимодействия показалось работа через web сервисы, поддерживаемые 1С.

С точки зрения публикации web сервиса особых сложностей нет. Шаги подробно описаны в статьях:

Проблемы возникли с доступом к опубликованному web-сервису 1С. Под IIS 7.5 из под Windows 2008R2 после полудня танцев с бубном проблему решить не удалось. Были изучены статьи и ветки форумов:

но счастье так и не наступило.

В результате решил, что стоит попробовать поднять web сервис на Apache, поскольку с ним у меня обычно все было несколько проще с настройкой. Итак, на другом порту (8080) на том-же сервере был поднят Apache 2.2.22. В 1С был создан ещё один web сервис и опубликован уже на Apache. С настройками по умолчанию он также не заработал. Разберем ошибки.

Web сервис был опубликован в 1С под именем wsApache.

Публикация web-сервиса 1С

Публикация web-сервиса 1С под Apache

Соответственно, в указанном при публикации каталоге появился файл default. vrd следующего содержания:

В httpd. conf 1С добавила следующие строчки:

В целом, файлы/изменения создаваемые 1С почти рабочие. Теперь о проблемах.

В некоторых статьях путь к web сервису указан как: https://имя_сервера:порт/имя_при_публикации/alias? wsdl.

  • Имя сервера: s-1s-1-hw
  • Порт: 8080
  • Имя при публикации: wsApache
  • Alias из файла default. vrd: service.1cws

Соответственно, НЕПРАВИЛЬНАЯ ссылка на web сервис 1С такая: https://s-1c-1-hw:8080/wsApache/service.1cws? wsdl

Если использовать такой линк, то 1C 8.2 выдаст сообщение вида:

Правильный вариант:

https://имя_сервера:порт/имя_при_публикации/ ws/ alias? wsdl.

Это обращение эквивалентно обращению по имени сервиса из default. vrd:

https://имя_сервера:порт/имя_при_публикации/ ws/ name? wsdl.

Соответственно, ПРАВИЛЬНЫЙ линк для доступа к web сервису 1С будет такой:

https://s-1c-1-hw:8080/wsApache/ ws/ service.1cws? wsdl

https://s-1c-1-hw:8080/wsApache/ ws/ service? wsdl

Если указать ссылку с суффиксом? wsdl, то в веб браузере отобразиться XML файл с описанием опубликованного сервиса.

Если указать ссылку без суффикса? wsdl, то при правильной настройке должна появится страница с гиперссылкой на опубликованный сервис:

Авторизация пользователя при обращении к web сервису 1С

Если попытаться получить доступ к web сервису опубликованному под Apache не исправляя файл default. vrd, то появиться стандартный диалог авторизации:

Диалог авторизации на web сервисе 1С

Диалог авторизации на web сервисе 1С

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

Можно исключить запрос авторизационной информации вбив логин и пароль прямо в файл default. vrd, что, конечно, не рекомендуется с точки зрения безопасности, но иногда необходимо.

Это все. В моем случае каких-то дополнительных правок конфиг файлов не потребовалось.

В некоторых статьях указывалось, что нужно убрать из httpd. conf опцию «Options None«. У меня работает в обоих вариантах, т. е. когда строка присутствует и когда она удалена.

Публикация web сервиса 1С на IIS 7.5

Как уже упоминал выше, с публикацией web сервиса на IIS 7.5 с первого раза у меня не задалось, хотя тонкий клиент запускается без проблем. Поскольку пароль в конфигурационном файле по соображениям безопасности меня не устраивал, вернулся к вопросу настройки IIS. Был опубликован web сервис с именем wsIIS и именем сервиса ServiceIIS и alias-ом serviceIIS.1cws. Галка в чекбоксе «Использовать аутентификацию операционной системы на веб-сервере» для простоты эксперимента была снята.

Публикация web сервиса 1С в IIS 7.5.

Публикация web сервиса 1С в IIS 7.5.

Корректная ссылка в моем случае: https://s-1c-1-hw/wsIIS/ws/ServiceIIS? wsdl. При попытке зайти из Chrome/IE получаем ошибку возвращенную IIS:

Ошибка HTTP 401.2 — Unauthorized

дабы избавиться от ошибки правим web. config сформированный 1С следующим образом:

Эта правка эквивалента изменению через консоль управления IIS для нашего опубликованного приложения с именем wsIIS правил авторизации пользователя.

Настройки IIS 7.5 для доступа к web сервисам 1C

Настройки IIS 7.5 для доступа к web сервисам 1C

Добавление тегов security в web. config или правка правил авторизации в консоли IIS приводит к тому, что при обращении к сервису по указанной выше ссылке появляется запрос на авторизацию. Вводим нашего тестового пользователя IUSR без пароля и получаем нужный XML файл в ответе сервера.

Прописав в default. vrd логин и пароль пользователя, как было указано выше для Apache, уберем окно авторизации и сервис будет всегда авторизовываться под указанным пользователем. Как проходит авторизация можно посмотреть в логах 1C. Но вариант с прописыванием пользователя в конфигурационный файл — не наш путь, ибо не секьюрно.

Изменим настройки авторизации пользователя (в IIS проверка подлинности), чтобы использовалась Windows авторизация. Сменить можно в консоли управления IIS, либо в конфигурационном файле. Мне больше нравиться конфигурационный файл. так как проще переносить настройки при миграции на другой сервер.

Источники:

https://inwebpress. ru/oshibka-not-acceptable-406/

https://www. bizkit. ru/2013/05/24/1722/

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: