Разработка HTTP-сервисов в расширениях — это эффективный способ интеграции 1С с внешними системами. Однако на практике разработчики часто сталкиваются с тем, что сервис не доступен по ожидаемому адресу, возвращая ошибку 404 (полезно также провести анализ состава расширений). Давайте разберем по шагам, как выявить причину и заставить сервис корректно работать.
Первая и самая распространенная ошибка — это неверно сформированный адрес запроса. Помочь в диагностике может тестирование http сервисов. Многие разработчики забывают, что при публикации информационной базы через веб-сервер, для доступа к HTTP-сервисам необходимо указывать специальный префикс hs.
Если вы привыкли обращаться к сервису по адресу типа http://srv1c/Buh3/ch/AR, то веб-сервер не может найти такой маршрут, так как он не понимает, что ch — это корневой URL вашего сервиса. Правильный формат ссылки должен выглядеть следующим образом:
http://[ИмяСервера]/[ИмяПубликации]/hs/[КорневойURL]/[Шаблон]
На примере из вашего случая, корректный путь будет выглядеть так:
http://srv1c/Buh3/hs/ch/AR
Обратите внимание на наличие /hs/ сразу после имени публикации. Именно этот префикс сообщает веб-серверу, что необходимо перенаправить запрос к механизму обработки HTTP-сервисов платформы 1С.
Если после корректировки URL вы все еще получаете ошибку, необходимо убедиться, что конфигуратор корректно обновил файл настроек публикации default.vrd. Иногда прав доступа пользователя Windows недостаточно для перезаписи конфигурационных файлов веб-сервера.
Запуск от имени администратора гарантирует, что 1С получит полные права на запись в каталог публикации веб-сервера IIS и сможет обновить файл default.vrd, добавив в него информацию о новом сервисе из расширения.
После того как 404 ошибка ушла, вы можете столкнуться с тем, что сервис начинает запрашивать данные для входа. Это нормальное поведение системы. 1С:Предприятие по умолчанию требует аутентификацию для доступа к прикладным объектам.
Разберем, как устроена Basic-авторизация в 1С:
Authorization передаются учетные данные в формате Base64.Basic-аутентификацию, формат выглядит так: Authorization: Basic [Base64(Логин:Пароль)].Base64 — это не шифрование, а кодирование, крайне рекомендуется использовать протокол HTTPS (SSL/TLS) для защиты передаваемого трафика от перехвата.Возникает логичный вопрос: как избежать передачи пароля в открытом или плохо защищенном виде? Рассмотрим несколько подходов:
БазовыеПрава и специфичная роль на чтение/запись данных).Помните, что HTTP-сервисы в 1С работают в контексте сеанса того пользователя, под которым выполнена аутентификация. Если вы укажете пользователя с полными правами в параметрах публикации, любая уязвимость в коде вашего сервиса может открыть злоумышленнику доступ к управлению всей информационной базой.
Для успешной работы сервиса:
/hs/ в строке запроса.HTTPS для обеспечения безопасности передаваемых данных при Basic-аутентификации.