Не указан заголовок управления сеансами — страшнее ошибки я ещё не получал. Краткая предистория: Лет 8 назад разрабатывал HTTP-сервис и все работало. Спустя 8 лет поменяли оборудование и «ничего не работает», по старой памяти позвонили мне. Начинаю тестировать и попадаю на ужасную ошибку:

<descr
    xmlns="http://v8.1c.ru/8.1/data/core">Не указан заголовок управления сеансами или куки с идентификатором сеанса.
</descr>

Тестирую HTTP я обычно в Insomnia, но получаю эту ошибку и не могу вспомнить, что бы встречал её раньше. Не знаю что делать. Думаю что проблема в инструменте, перехожу в обработку 1с «консоль HTTP запросов» и та же самая ошибка. Начинаю искать в поисковиках, информации нигде нет, видимо редкая ошибка.

Потратил кучу времени, перерыл кучу сайтов и ответ был найден на заметках из Зазеркалья в заметке «Повышение производительности веб-сервисов«.

В чем суть проблемы, что кстати понятно из описания: Ошибка указывает на отсутствие или некорректную передачу идентификатора сеанса между клиентом и сервером 1С. Для исправления необходимо, корректно формировать заголовки и cookie для управления сеансами.

Ошибка: «Не указан заголовок управления сеансами или куки с идентификатором сеанса»

Причина возникновения

Эта ошибка появляется при работе с веб-сервисами 1С и означает, что в HTTP-запросе отсутствует необходимый заголовок или cookie, идентифицирующий сеанс пользователя. Я выявил несколько причин этой ошибки:

  • Клиент не отправил заголовок IBSession с директивой start для создания нового сеанса.
  • Клиент не передал cookie IBSession с идентификатором ранее созданного сеанса при повторных запросах.
  • В настройках сервиса не включён или неправильно настроен режим повторного использования сеансов.

Как работает механизм сеансов

  1. Создание сеанса:
    Для создания постоянного сеанса клиент должен отправить заголовок IBSession: start в HTTP-запросе. После этого сервер создаёт новый сеанс и возвращает cookie IBSession с уникальным идентификатором сеанса.
  2. Использование существующего сеанса:
    Для последующих запросов клиент должен отправлять cookie IBSession с идентификатором сеанса, полученным ранее. Это позволяет серверу «узнавать» клиента и сохранять состояние между запросами.
  3. Завершение сеанса:
    Сеанс может завершиться автоматически (например, по тайм-ауту) или по команде клиента. После завершения идентификатор сеанса становится недействительным.

Как исправить ошибку

  • Проверьте, что клиентский код отправляет заголовок IBSession: start при первом запросе.
  • Убедитесь, что в последующих запросах cookie IBSession с идентификатором сеанса передаётся серверу.
  • Проверьте настройки публикации веб-сервиса:
    Включите режим повторного использования сеансов, если требуется поддерживать состояние между запросами.
  • Проверьте корректность адреса публикации и доступность сервера 1С.
Получается достаточно добавить в запрос IBSession: start и все заработает.
Если же сессия уже существует добавляем куки Cookie: IBSession=06AB0219-F880-1FFB-191A-C22108F03885

Дополнительные рекомендации

  • Если ошибка появляется при интеграции с внешними системами (например, телефонией), проверьте логи клиента и убедитесь, что он поддерживает работу с cookie и заголовками.
  • При необходимости ознакомьтесь с документацией по ручному управлению сеансами в 1С (Нужна подписка ИТС или статус партнера)