Имя: Пароль:
1C
1С v8
Проблема с публикацией http-сервиса на CENTOS7
0 Rizhij_Nikitos
 
28.11.18
14:41
Доброго времени суток, уважаемые форумчане. Возникла проблема при публикации самописного http-сервиса для БП 3.0. Изначально сервис был написан и обкатан на локальной машине с виндой, все работало, публиковалось, доступ извне работал правильно. Развернули в ЦОДе, начались проблемы.


Входные данные:
1С: 8.3.10.2667 х64, БП 3.0.64.34, серверная БД на postgres 9.6.
Веб-сервер: Apache 2.4 x64
ОС: CENTOS7 в ЦОДе


Какие настройки выполнены и что пробовали:
Установлены расширения веб-сервера для 1С, х64, so для апача версии 2.4 лежит в папке с 1С.
У пользователя, под которым запускается апач и 1С есть доступ на чтение и выполнение всех файлов в этой папке.
В .vrd схеме прописана авторизация под пользователем 1С, у которого есть полные права, а так же права на использование указанных http-сервисов. Пользователь заведен на латинице.
Открыты порты 80, 1540, 1560-1591. Белый IP.
В конфиге апача раскомментировано использование so для работы с ws, прописан алиас на виртуальное приложение.
Схема совпадает с нотацией, описанной на its.


Описание проблемы:

Обращаемся к сервису и получаем ошибку:
1C:Enterprise 8 application error:
The HTTP header contains invalid characters: [ Content-Length: 158]

Гугл результатов не дает, либо они не в кассу. Пробовали убирать авторизацию из vrd схемы, браузер запрашивает логин пароль. После ввода получаем ту же ошибку.

Есть ли у кого-то еще варианты куда копать и что можно сделать? Мы зашли в тупик.
1 sergeyspb13
 
28.11.18
14:58
Так ошибка написана: The HTTP header contains invalid characters

смотри как настроен apache, мож utf-8 где-то не правильно прописан или логи смотреть надо, чего именно ему не нравится
2 Rizhij_Nikitos
 
28.11.18
17:40
(1) В httpd.conf установлен AddDefaultCharset UTF-8
Есть еще какие-то настройки апача, которые отвечают за кодировку?

Прологировал ответ 1Ски - доступ к сервису есть, запрос доходит, обрабатывается 1Ской и возвращается http-ответ следующего содержания:
Заголовки:
Content-Type=application/json;charset=utf-8
Content-Length=95
Код состояния: 418
Строка ответа: {
"description": "В запросе отсутствует свойство: дата запроса, выполнение запроса прервано!"
}

Это ответ который формирую я своим сервисом. Все штатно. 1С передает управление апачу, после чего апач возвращает все ту же ошибку.

Что интересно, если 1С вываливается с необработанной ошибкой, например деление на 0 сделать, приходит стандартное 1Совское исключение для веб сервера в котором написана ошибка 500 и ОписаниеОшибки.

В логах апача в ошибках появляется запись с текстом нашего запроса и информацией:
HTTP/1.1 400 248 "-"
3 mexanik_96
 
28.11.18
18:13
пришей хидеры по кодировке
4 mexanik_96
 
28.11.18
18:15
+(3) 400 ошибка в синтаксисе(строке запроса)
5 Garykom
 
гуру
28.11.18
18:30
Проблема не в " "?
6 Rizhij_Nikitos
 
28.11.18
18:33
(3) HTTPОтвет.Заголовки["Content-Type"] = "application/json;charset=utf-8"
стоит

(4) синтаксис поправил, вернулся нормальный ответ в нормальном виде, но почему не работает ошибка - непонятно.
7 Garykom
 
гуру
28.11.18
18:39
Можешь показать что в запросе и что в ответе?
8 Rizhij_Nikitos
 
28.11.18
18:50
Мы победили. В общем на стороне 1С я не классифицировал ошибки и всегда в случае некорректного вопроса возвращал ошибку 418. На винде все было красиво и работало замечательно, а вот на линуксе если возвращать ошибку 418, вываливается какой то мусор. Типа проблема с заголовками. Хотя заголовки, кодировки, все в порядке. Возможно проблема в библиотеке wsap24.so, но это уже не наши проблемы. Поменяли код ошибки на 400 и все заработало.
Основная теорема систематики: Новые системы плодят новые проблемы.